(0) Obligation:

JBC Problem based on JBC Program:
No human-readable program information known.

Manifest-Version: 1.0 Created-By: 1.6.0_20 (Apple Inc.) Main-Class: Test10

(1) JBC2FIG (SOUND transformation)

Constructed FIGraph.

(2) Obligation:

FIGraph based on JBC Program:
Graph of 157 nodes with 1 SCC.

(3) FIGtoITRSProof (SOUND transformation)

Transformed FIGraph to ITRS rules

(4) Obligation:

ITRS problem:

The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean

The TRS R consists of the following rules:
Load1100(i5, i7, i7, 0) → Load83(i5, i7 + 1)
Load949(i5, i7, i7, i7, i7, 0) → Load1100(i5, i7, i7, i7)
Load1100(i5, i7, i7, i696) → Cond_Load1100(i696 > 0, i5, i7, i7, i696)
Cond_Load1100(TRUE, i5, i7, i7, i696) → Load1100(i5, i7, i7, i696 - 1)
Load768(i5, i7, i7, i7, i7, 0) → Load949(i5, i7, i7, i7, i7, i7)
Load949(i5, i7, i7, i7, i7, i605) → Cond_Load949(i605 > 0, i5, i7, i7, i7, i7, i605)
Cond_Load949(TRUE, i5, i7, i7, i7, i7, i605) → Load949(i5, i7, i7, i7, i7, i605 - 1)
Load608(i5, i7, i7, i7, i7, 0) → Load768(i5, i7, i7, i7, i7, i7)
Load768(i5, i7, i7, i7, i7, i436) → Cond_Load768(i436 > 0, i5, i7, i7, i7, i7, i436)
Cond_Load768(TRUE, i5, i7, i7, i7, i7, i436) → Load768(i5, i7, i7, i7, i7, i436 - 1)
Load484(i5, i7, i7, i7, i7, 0) → Load608(i5, i7, i7, i7, i7, i7)
Load608(i5, i7, i7, i7, i7, i296) → Cond_Load608(i296 > 0, i5, i7, i7, i7, i7, i296)
Cond_Load608(TRUE, i5, i7, i7, i7, i7, i296) → Load608(i5, i7, i7, i7, i7, i296 - 1)
Load363(i5, i7, i7, i7, i7, 0) → Load484(i5, i7, i7, i7, i7, i7)
Load484(i5, i7, i7, i7, i7, i187) → Cond_Load484(i187 > 0, i5, i7, i7, i7, i7, i187)
Cond_Load484(TRUE, i5, i7, i7, i7, i7, i187) → Load484(i5, i7, i7, i7, i7, i187 - 1)
Load258(i5, i7, i7, i7, i7, 0) → Load363(i5, i7, i7, i7, i7, i7)
Load363(i5, i7, i7, i7, i7, i104) → Cond_Load363(i104 > 0, i5, i7, i7, i7, i7, i104)
Cond_Load363(TRUE, i5, i7, i7, i7, i7, i104) → Load363(i5, i7, i7, i7, i7, i104 - 1)
Load175(i5, i7, i7, i7, i7, 0) → Load258(i5, i7, i7, i7, i7, i7)
Load258(i5, i7, i7, i7, i7, i49) → Cond_Load258(i49 > 0, i5, i7, i7, i7, i7, i49)
Cond_Load258(TRUE, i5, i7, i7, i7, i7, i49) → Load258(i5, i7, i7, i7, i7, i49 - 1)
Load83(i5, i7) → Cond_Load83(i7 > 0 && i7 < 100, i5, i7)
Cond_Load83(TRUE, i5, i7) → Load175(i5, i7, i7, i7, i7, i7)
Load55(i5) → Cond_Load55(i5 > 0 && i5 < 100, i5)
Cond_Load55(TRUE, i5) → Load175(i5, i5, i5, i5, i5, i5)
Load175(i5, i7, i7, i7, i7, i20) → Cond_Load175(i20 > 0, i5, i7, i7, i7, i7, i20)
Cond_Load175(TRUE, i5, i7, i7, i7, i7, i20) → Load175(i5, i7, i7, i7, i7, i20 - 1)
Load83(i5, i7) → Cond_Load831(i7 >= 100 && i5 > 0, i5, i7)
Cond_Load831(TRUE, i5, i7) → Load55(i5 - 1)
Load55(i5) → Cond_Load551(i5 >= 100, i5)
Cond_Load551(TRUE, i5) → Load55(i5 - 1)
The set Q consists of the following terms:
Load1100(x0, x1, x1, x2)
Cond_Load1100(TRUE, x0, x1, x1, x2)
Load949(x0, x1, x1, x1, x1, x2)
Cond_Load949(TRUE, x0, x1, x1, x1, x1, x2)
Load768(x0, x1, x1, x1, x1, x2)
Cond_Load768(TRUE, x0, x1, x1, x1, x1, x2)
Load608(x0, x1, x1, x1, x1, x2)
Cond_Load608(TRUE, x0, x1, x1, x1, x1, x2)
Load484(x0, x1, x1, x1, x1, x2)
Cond_Load484(TRUE, x0, x1, x1, x1, x1, x2)
Load363(x0, x1, x1, x1, x1, x2)
Cond_Load363(TRUE, x0, x1, x1, x1, x1, x2)
Load258(x0, x1, x1, x1, x1, x2)
Cond_Load258(TRUE, x0, x1, x1, x1, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x1, x1, x1, x2)
Cond_Load175(TRUE, x0, x1, x1, x1, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(5) DuplicateArgsRemoverProof (EQUIVALENT transformation)

Some arguments are removed because they only appear as duplicates.
We removed arguments according to the following replacements:

Load175(x1, x2, x3, x4, x5, x6) → Load175(x1, x5, x6)
Cond_Load175(x1, x2, x3, x4, x5, x6, x7) → Cond_Load175(x1, x2, x6, x7)
Load258(x1, x2, x3, x4, x5, x6) → Load258(x1, x5, x6)
Cond_Load258(x1, x2, x3, x4, x5, x6, x7) → Cond_Load258(x1, x2, x6, x7)
Load363(x1, x2, x3, x4, x5, x6) → Load363(x1, x5, x6)
Cond_Load363(x1, x2, x3, x4, x5, x6, x7) → Cond_Load363(x1, x2, x6, x7)
Load484(x1, x2, x3, x4, x5, x6) → Load484(x1, x5, x6)
Cond_Load484(x1, x2, x3, x4, x5, x6, x7) → Cond_Load484(x1, x2, x6, x7)
Load608(x1, x2, x3, x4, x5, x6) → Load608(x1, x5, x6)
Cond_Load608(x1, x2, x3, x4, x5, x6, x7) → Cond_Load608(x1, x2, x6, x7)
Load768(x1, x2, x3, x4, x5, x6) → Load768(x1, x5, x6)
Cond_Load768(x1, x2, x3, x4, x5, x6, x7) → Cond_Load768(x1, x2, x6, x7)
Load949(x1, x2, x3, x4, x5, x6) → Load949(x1, x5, x6)
Cond_Load949(x1, x2, x3, x4, x5, x6, x7) → Cond_Load949(x1, x2, x6, x7)
Load1100(x1, x2, x3, x4) → Load1100(x1, x3, x4)
Cond_Load1100(x1, x2, x3, x4, x5) → Cond_Load1100(x1, x2, x4, x5)

(6) Obligation:

ITRS problem:

The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean

The TRS R consists of the following rules:
Load1100(i5, i7, 0) → Load83(i5, i7 + 1)
Load949(i5, i7, 0) → Load1100(i5, i7, i7)
Load1100(i5, i7, i696) → Cond_Load1100(i696 > 0, i5, i7, i696)
Cond_Load1100(TRUE, i5, i7, i696) → Load1100(i5, i7, i696 - 1)
Load768(i5, i7, 0) → Load949(i5, i7, i7)
Load949(i5, i7, i605) → Cond_Load949(i605 > 0, i5, i7, i605)
Cond_Load949(TRUE, i5, i7, i605) → Load949(i5, i7, i605 - 1)
Load608(i5, i7, 0) → Load768(i5, i7, i7)
Load768(i5, i7, i436) → Cond_Load768(i436 > 0, i5, i7, i436)
Cond_Load768(TRUE, i5, i7, i436) → Load768(i5, i7, i436 - 1)
Load484(i5, i7, 0) → Load608(i5, i7, i7)
Load608(i5, i7, i296) → Cond_Load608(i296 > 0, i5, i7, i296)
Cond_Load608(TRUE, i5, i7, i296) → Load608(i5, i7, i296 - 1)
Load363(i5, i7, 0) → Load484(i5, i7, i7)
Load484(i5, i7, i187) → Cond_Load484(i187 > 0, i5, i7, i187)
Cond_Load484(TRUE, i5, i7, i187) → Load484(i5, i7, i187 - 1)
Load258(i5, i7, 0) → Load363(i5, i7, i7)
Load363(i5, i7, i104) → Cond_Load363(i104 > 0, i5, i7, i104)
Cond_Load363(TRUE, i5, i7, i104) → Load363(i5, i7, i104 - 1)
Load175(i5, i7, 0) → Load258(i5, i7, i7)
Load258(i5, i7, i49) → Cond_Load258(i49 > 0, i5, i7, i49)
Cond_Load258(TRUE, i5, i7, i49) → Load258(i5, i7, i49 - 1)
Load83(i5, i7) → Cond_Load83(i7 > 0 && i7 < 100, i5, i7)
Cond_Load83(TRUE, i5, i7) → Load175(i5, i7, i7)
Load55(i5) → Cond_Load55(i5 > 0 && i5 < 100, i5)
Cond_Load55(TRUE, i5) → Load175(i5, i5, i5)
Load175(i5, i7, i20) → Cond_Load175(i20 > 0, i5, i7, i20)
Cond_Load175(TRUE, i5, i7, i20) → Load175(i5, i7, i20 - 1)
Load83(i5, i7) → Cond_Load831(i7 >= 100 && i5 > 0, i5, i7)
Cond_Load831(TRUE, i5, i7) → Load55(i5 - 1)
Load55(i5) → Cond_Load551(i5 >= 100, i5)
Cond_Load551(TRUE, i5) → Load55(i5 - 1)
The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(7) ITRStoIDPProof (EQUIVALENT transformation)

Added dependency pairs

(8) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
Load1100(i5, i7, 0) → Load83(i5, i7 + 1)
Load949(i5, i7, 0) → Load1100(i5, i7, i7)
Load1100(i5, i7, i696) → Cond_Load1100(i696 > 0, i5, i7, i696)
Cond_Load1100(TRUE, i5, i7, i696) → Load1100(i5, i7, i696 - 1)
Load768(i5, i7, 0) → Load949(i5, i7, i7)
Load949(i5, i7, i605) → Cond_Load949(i605 > 0, i5, i7, i605)
Cond_Load949(TRUE, i5, i7, i605) → Load949(i5, i7, i605 - 1)
Load608(i5, i7, 0) → Load768(i5, i7, i7)
Load768(i5, i7, i436) → Cond_Load768(i436 > 0, i5, i7, i436)
Cond_Load768(TRUE, i5, i7, i436) → Load768(i5, i7, i436 - 1)
Load484(i5, i7, 0) → Load608(i5, i7, i7)
Load608(i5, i7, i296) → Cond_Load608(i296 > 0, i5, i7, i296)
Cond_Load608(TRUE, i5, i7, i296) → Load608(i5, i7, i296 - 1)
Load363(i5, i7, 0) → Load484(i5, i7, i7)
Load484(i5, i7, i187) → Cond_Load484(i187 > 0, i5, i7, i187)
Cond_Load484(TRUE, i5, i7, i187) → Load484(i5, i7, i187 - 1)
Load258(i5, i7, 0) → Load363(i5, i7, i7)
Load363(i5, i7, i104) → Cond_Load363(i104 > 0, i5, i7, i104)
Cond_Load363(TRUE, i5, i7, i104) → Load363(i5, i7, i104 - 1)
Load175(i5, i7, 0) → Load258(i5, i7, i7)
Load258(i5, i7, i49) → Cond_Load258(i49 > 0, i5, i7, i49)
Cond_Load258(TRUE, i5, i7, i49) → Load258(i5, i7, i49 - 1)
Load83(i5, i7) → Cond_Load83(i7 > 0 && i7 < 100, i5, i7)
Cond_Load83(TRUE, i5, i7) → Load175(i5, i7, i7)
Load55(i5) → Cond_Load55(i5 > 0 && i5 < 100, i5)
Cond_Load55(TRUE, i5) → Load175(i5, i5, i5)
Load175(i5, i7, i20) → Cond_Load175(i20 > 0, i5, i7, i20)
Cond_Load175(TRUE, i5, i7, i20) → Load175(i5, i7, i20 - 1)
Load83(i5, i7) → Cond_Load831(i7 >= 100 && i5 > 0, i5, i7)
Cond_Load831(TRUE, i5, i7) → Load55(i5 - 1)
Load55(i5) → Cond_Load551(i5 >= 100, i5)
Cond_Load551(TRUE, i5) → Load55(i5 - 1)

The integer pair graph contains the following rules and edges:
(0): LOAD1100(i5[0], i7[0], 0) → LOAD83(i5[0], i7[0] + 1)
(1): LOAD949(i5[1], i7[1], 0) → LOAD1100(i5[1], i7[1], i7[1])
(2): LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(i696[2] > 0, i5[2], i7[2], i696[2])
(3): COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], i696[3] - 1)
(4): LOAD768(i5[4], i7[4], 0) → LOAD949(i5[4], i7[4], i7[4])
(5): LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(i605[5] > 0, i5[5], i7[5], i605[5])
(6): COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], i605[6] - 1)
(7): LOAD608(i5[7], i7[7], 0) → LOAD768(i5[7], i7[7], i7[7])
(8): LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(i436[8] > 0, i5[8], i7[8], i436[8])
(9): COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], i436[9] - 1)
(10): LOAD484(i5[10], i7[10], 0) → LOAD608(i5[10], i7[10], i7[10])
(11): LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(i296[11] > 0, i5[11], i7[11], i296[11])
(12): COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], i296[12] - 1)
(13): LOAD363(i5[13], i7[13], 0) → LOAD484(i5[13], i7[13], i7[13])
(14): LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(i187[14] > 0, i5[14], i7[14], i187[14])
(15): COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], i187[15] - 1)
(16): LOAD258(i5[16], i7[16], 0) → LOAD363(i5[16], i7[16], i7[16])
(17): LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(i104[17] > 0, i5[17], i7[17], i104[17])
(18): COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], i104[18] - 1)
(19): LOAD175(i5[19], i7[19], 0) → LOAD258(i5[19], i7[19], i7[19])
(20): LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(i49[20] > 0, i5[20], i7[20], i49[20])
(21): COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], i49[21] - 1)
(22): LOAD83(i5[22], i7[22]) → COND_LOAD83(i7[22] > 0 && i7[22] < 100, i5[22], i7[22])
(23): COND_LOAD83(TRUE, i5[23], i7[23]) → LOAD175(i5[23], i7[23], i7[23])
(24): LOAD55(i5[24]) → COND_LOAD55(i5[24] > 0 && i5[24] < 100, i5[24])
(25): COND_LOAD55(TRUE, i5[25]) → LOAD175(i5[25], i5[25], i5[25])
(26): LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(i20[26] > 0, i5[26], i7[26], i20[26])
(27): COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], i20[27] - 1)
(28): LOAD83(i5[28], i7[28]) → COND_LOAD831(i7[28] >= 100 && i5[28] > 0, i5[28], i7[28])
(29): COND_LOAD831(TRUE, i5[29], i7[29]) → LOAD55(i5[29] - 1)
(30): LOAD55(i5[30]) → COND_LOAD551(i5[30] >= 100, i5[30])
(31): COND_LOAD551(TRUE, i5[31]) → LOAD55(i5[31] - 1)

(0) -> (22), if ((i5[0]* i5[22])∧(i7[0] + 1* i7[22]))


(0) -> (28), if ((i5[0]* i5[28])∧(i7[0] + 1* i7[28]))


(1) -> (0), if ((i7[1]* 0)∧(i5[1]* i5[0])∧(i7[1]* i7[0]))


(1) -> (2), if ((i5[1]* i5[2])∧(i7[1]* i7[2])∧(i7[1]* i696[2]))


(2) -> (3), if ((i5[2]* i5[3])∧(i7[2]* i7[3])∧(i696[2]* i696[3])∧(i696[2] > 0* TRUE))


(3) -> (0), if ((i7[3]* i7[0])∧(i5[3]* i5[0])∧(i696[3] - 1* 0))


(3) -> (2), if ((i7[3]* i7[2])∧(i696[3] - 1* i696[2])∧(i5[3]* i5[2]))


(4) -> (1), if ((i5[4]* i5[1])∧(i7[4]* 0)∧(i7[4]* i7[1]))


(4) -> (5), if ((i7[4]* i7[5])∧(i7[4]* i605[5])∧(i5[4]* i5[5]))


(5) -> (6), if ((i5[5]* i5[6])∧(i7[5]* i7[6])∧(i605[5]* i605[6])∧(i605[5] > 0* TRUE))


(6) -> (1), if ((i605[6] - 1* 0)∧(i5[6]* i5[1])∧(i7[6]* i7[1]))


(6) -> (5), if ((i7[6]* i7[5])∧(i605[6] - 1* i605[5])∧(i5[6]* i5[5]))


(7) -> (4), if ((i7[7]* 0)∧(i7[7]* i7[4])∧(i5[7]* i5[4]))


(7) -> (8), if ((i5[7]* i5[8])∧(i7[7]* i436[8])∧(i7[7]* i7[8]))


(8) -> (9), if ((i7[8]* i7[9])∧(i436[8]* i436[9])∧(i5[8]* i5[9])∧(i436[8] > 0* TRUE))


(9) -> (4), if ((i7[9]* i7[4])∧(i436[9] - 1* 0)∧(i5[9]* i5[4]))


(9) -> (8), if ((i436[9] - 1* i436[8])∧(i7[9]* i7[8])∧(i5[9]* i5[8]))


(10) -> (7), if ((i5[10]* i5[7])∧(i7[10]* i7[7])∧(i7[10]* 0))


(10) -> (11), if ((i7[10]* i7[11])∧(i5[10]* i5[11])∧(i7[10]* i296[11]))


(11) -> (12), if ((i296[11] > 0* TRUE)∧(i7[11]* i7[12])∧(i296[11]* i296[12])∧(i5[11]* i5[12]))


(12) -> (7), if ((i296[12] - 1* 0)∧(i7[12]* i7[7])∧(i5[12]* i5[7]))


(12) -> (11), if ((i296[12] - 1* i296[11])∧(i5[12]* i5[11])∧(i7[12]* i7[11]))


(13) -> (10), if ((i5[13]* i5[10])∧(i7[13]* 0)∧(i7[13]* i7[10]))


(13) -> (14), if ((i7[13]* i187[14])∧(i5[13]* i5[14])∧(i7[13]* i7[14]))


(14) -> (15), if ((i7[14]* i7[15])∧(i5[14]* i5[15])∧(i187[14]* i187[15])∧(i187[14] > 0* TRUE))


(15) -> (10), if ((i7[15]* i7[10])∧(i187[15] - 1* 0)∧(i5[15]* i5[10]))


(15) -> (14), if ((i187[15] - 1* i187[14])∧(i5[15]* i5[14])∧(i7[15]* i7[14]))


(16) -> (13), if ((i7[16]* i7[13])∧(i7[16]* 0)∧(i5[16]* i5[13]))


(16) -> (17), if ((i7[16]* i104[17])∧(i5[16]* i5[17])∧(i7[16]* i7[17]))


(17) -> (18), if ((i7[17]* i7[18])∧(i5[17]* i5[18])∧(i104[17]* i104[18])∧(i104[17] > 0* TRUE))


(18) -> (13), if ((i5[18]* i5[13])∧(i104[18] - 1* 0)∧(i7[18]* i7[13]))


(18) -> (17), if ((i104[18] - 1* i104[17])∧(i5[18]* i5[17])∧(i7[18]* i7[17]))


(19) -> (16), if ((i7[19]* 0)∧(i5[19]* i5[16])∧(i7[19]* i7[16]))


(19) -> (20), if ((i7[19]* i49[20])∧(i7[19]* i7[20])∧(i5[19]* i5[20]))


(20) -> (21), if ((i7[20]* i7[21])∧(i49[20] > 0* TRUE)∧(i5[20]* i5[21])∧(i49[20]* i49[21]))


(21) -> (16), if ((i7[21]* i7[16])∧(i49[21] - 1* 0)∧(i5[21]* i5[16]))


(21) -> (20), if ((i7[21]* i7[20])∧(i49[21] - 1* i49[20])∧(i5[21]* i5[20]))


(22) -> (23), if ((i5[22]* i5[23])∧(i7[22] > 0 && i7[22] < 100* TRUE)∧(i7[22]* i7[23]))


(23) -> (19), if ((i5[23]* i5[19])∧(i7[23]* i7[19])∧(i7[23]* 0))


(23) -> (26), if ((i7[23]* i7[26])∧(i5[23]* i5[26])∧(i7[23]* i20[26]))


(24) -> (25), if ((i5[24] > 0 && i5[24] < 100* TRUE)∧(i5[24]* i5[25]))


(25) -> (19), if ((i5[25]* i5[19])∧(i5[25]* i7[19])∧(i5[25]* 0))


(25) -> (26), if ((i5[25]* i5[26])∧(i5[25]* i7[26])∧(i5[25]* i20[26]))


(26) -> (27), if ((i20[26] > 0* TRUE)∧(i7[26]* i7[27])∧(i20[26]* i20[27])∧(i5[26]* i5[27]))


(27) -> (19), if ((i7[27]* i7[19])∧(i5[27]* i5[19])∧(i20[27] - 1* 0))


(27) -> (26), if ((i20[27] - 1* i20[26])∧(i7[27]* i7[26])∧(i5[27]* i5[26]))


(28) -> (29), if ((i7[28] >= 100 && i5[28] > 0* TRUE)∧(i5[28]* i5[29])∧(i7[28]* i7[29]))


(29) -> (24), if ((i5[29] - 1* i5[24]))


(29) -> (30), if ((i5[29] - 1* i5[30]))


(30) -> (31), if ((i5[30]* i5[31])∧(i5[30] >= 100* TRUE))


(31) -> (24), if ((i5[31] - 1* i5[24]))


(31) -> (30), if ((i5[31] - 1* i5[30]))



The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(9) UsableRulesProof (EQUIVALENT transformation)

As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R.

(10) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


R is empty.

The integer pair graph contains the following rules and edges:
(0): LOAD1100(i5[0], i7[0], 0) → LOAD83(i5[0], i7[0] + 1)
(1): LOAD949(i5[1], i7[1], 0) → LOAD1100(i5[1], i7[1], i7[1])
(2): LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(i696[2] > 0, i5[2], i7[2], i696[2])
(3): COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], i696[3] - 1)
(4): LOAD768(i5[4], i7[4], 0) → LOAD949(i5[4], i7[4], i7[4])
(5): LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(i605[5] > 0, i5[5], i7[5], i605[5])
(6): COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], i605[6] - 1)
(7): LOAD608(i5[7], i7[7], 0) → LOAD768(i5[7], i7[7], i7[7])
(8): LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(i436[8] > 0, i5[8], i7[8], i436[8])
(9): COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], i436[9] - 1)
(10): LOAD484(i5[10], i7[10], 0) → LOAD608(i5[10], i7[10], i7[10])
(11): LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(i296[11] > 0, i5[11], i7[11], i296[11])
(12): COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], i296[12] - 1)
(13): LOAD363(i5[13], i7[13], 0) → LOAD484(i5[13], i7[13], i7[13])
(14): LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(i187[14] > 0, i5[14], i7[14], i187[14])
(15): COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], i187[15] - 1)
(16): LOAD258(i5[16], i7[16], 0) → LOAD363(i5[16], i7[16], i7[16])
(17): LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(i104[17] > 0, i5[17], i7[17], i104[17])
(18): COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], i104[18] - 1)
(19): LOAD175(i5[19], i7[19], 0) → LOAD258(i5[19], i7[19], i7[19])
(20): LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(i49[20] > 0, i5[20], i7[20], i49[20])
(21): COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], i49[21] - 1)
(22): LOAD83(i5[22], i7[22]) → COND_LOAD83(i7[22] > 0 && i7[22] < 100, i5[22], i7[22])
(23): COND_LOAD83(TRUE, i5[23], i7[23]) → LOAD175(i5[23], i7[23], i7[23])
(24): LOAD55(i5[24]) → COND_LOAD55(i5[24] > 0 && i5[24] < 100, i5[24])
(25): COND_LOAD55(TRUE, i5[25]) → LOAD175(i5[25], i5[25], i5[25])
(26): LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(i20[26] > 0, i5[26], i7[26], i20[26])
(27): COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], i20[27] - 1)
(28): LOAD83(i5[28], i7[28]) → COND_LOAD831(i7[28] >= 100 && i5[28] > 0, i5[28], i7[28])
(29): COND_LOAD831(TRUE, i5[29], i7[29]) → LOAD55(i5[29] - 1)
(30): LOAD55(i5[30]) → COND_LOAD551(i5[30] >= 100, i5[30])
(31): COND_LOAD551(TRUE, i5[31]) → LOAD55(i5[31] - 1)

(0) -> (22), if ((i5[0]* i5[22])∧(i7[0] + 1* i7[22]))


(0) -> (28), if ((i5[0]* i5[28])∧(i7[0] + 1* i7[28]))


(1) -> (0), if ((i7[1]* 0)∧(i5[1]* i5[0])∧(i7[1]* i7[0]))


(1) -> (2), if ((i5[1]* i5[2])∧(i7[1]* i7[2])∧(i7[1]* i696[2]))


(2) -> (3), if ((i5[2]* i5[3])∧(i7[2]* i7[3])∧(i696[2]* i696[3])∧(i696[2] > 0* TRUE))


(3) -> (0), if ((i7[3]* i7[0])∧(i5[3]* i5[0])∧(i696[3] - 1* 0))


(3) -> (2), if ((i7[3]* i7[2])∧(i696[3] - 1* i696[2])∧(i5[3]* i5[2]))


(4) -> (1), if ((i5[4]* i5[1])∧(i7[4]* 0)∧(i7[4]* i7[1]))


(4) -> (5), if ((i7[4]* i7[5])∧(i7[4]* i605[5])∧(i5[4]* i5[5]))


(5) -> (6), if ((i5[5]* i5[6])∧(i7[5]* i7[6])∧(i605[5]* i605[6])∧(i605[5] > 0* TRUE))


(6) -> (1), if ((i605[6] - 1* 0)∧(i5[6]* i5[1])∧(i7[6]* i7[1]))


(6) -> (5), if ((i7[6]* i7[5])∧(i605[6] - 1* i605[5])∧(i5[6]* i5[5]))


(7) -> (4), if ((i7[7]* 0)∧(i7[7]* i7[4])∧(i5[7]* i5[4]))


(7) -> (8), if ((i5[7]* i5[8])∧(i7[7]* i436[8])∧(i7[7]* i7[8]))


(8) -> (9), if ((i7[8]* i7[9])∧(i436[8]* i436[9])∧(i5[8]* i5[9])∧(i436[8] > 0* TRUE))


(9) -> (4), if ((i7[9]* i7[4])∧(i436[9] - 1* 0)∧(i5[9]* i5[4]))


(9) -> (8), if ((i436[9] - 1* i436[8])∧(i7[9]* i7[8])∧(i5[9]* i5[8]))


(10) -> (7), if ((i5[10]* i5[7])∧(i7[10]* i7[7])∧(i7[10]* 0))


(10) -> (11), if ((i7[10]* i7[11])∧(i5[10]* i5[11])∧(i7[10]* i296[11]))


(11) -> (12), if ((i296[11] > 0* TRUE)∧(i7[11]* i7[12])∧(i296[11]* i296[12])∧(i5[11]* i5[12]))


(12) -> (7), if ((i296[12] - 1* 0)∧(i7[12]* i7[7])∧(i5[12]* i5[7]))


(12) -> (11), if ((i296[12] - 1* i296[11])∧(i5[12]* i5[11])∧(i7[12]* i7[11]))


(13) -> (10), if ((i5[13]* i5[10])∧(i7[13]* 0)∧(i7[13]* i7[10]))


(13) -> (14), if ((i7[13]* i187[14])∧(i5[13]* i5[14])∧(i7[13]* i7[14]))


(14) -> (15), if ((i7[14]* i7[15])∧(i5[14]* i5[15])∧(i187[14]* i187[15])∧(i187[14] > 0* TRUE))


(15) -> (10), if ((i7[15]* i7[10])∧(i187[15] - 1* 0)∧(i5[15]* i5[10]))


(15) -> (14), if ((i187[15] - 1* i187[14])∧(i5[15]* i5[14])∧(i7[15]* i7[14]))


(16) -> (13), if ((i7[16]* i7[13])∧(i7[16]* 0)∧(i5[16]* i5[13]))


(16) -> (17), if ((i7[16]* i104[17])∧(i5[16]* i5[17])∧(i7[16]* i7[17]))


(17) -> (18), if ((i7[17]* i7[18])∧(i5[17]* i5[18])∧(i104[17]* i104[18])∧(i104[17] > 0* TRUE))


(18) -> (13), if ((i5[18]* i5[13])∧(i104[18] - 1* 0)∧(i7[18]* i7[13]))


(18) -> (17), if ((i104[18] - 1* i104[17])∧(i5[18]* i5[17])∧(i7[18]* i7[17]))


(19) -> (16), if ((i7[19]* 0)∧(i5[19]* i5[16])∧(i7[19]* i7[16]))


(19) -> (20), if ((i7[19]* i49[20])∧(i7[19]* i7[20])∧(i5[19]* i5[20]))


(20) -> (21), if ((i7[20]* i7[21])∧(i49[20] > 0* TRUE)∧(i5[20]* i5[21])∧(i49[20]* i49[21]))


(21) -> (16), if ((i7[21]* i7[16])∧(i49[21] - 1* 0)∧(i5[21]* i5[16]))


(21) -> (20), if ((i7[21]* i7[20])∧(i49[21] - 1* i49[20])∧(i5[21]* i5[20]))


(22) -> (23), if ((i5[22]* i5[23])∧(i7[22] > 0 && i7[22] < 100* TRUE)∧(i7[22]* i7[23]))


(23) -> (19), if ((i5[23]* i5[19])∧(i7[23]* i7[19])∧(i7[23]* 0))


(23) -> (26), if ((i7[23]* i7[26])∧(i5[23]* i5[26])∧(i7[23]* i20[26]))


(24) -> (25), if ((i5[24] > 0 && i5[24] < 100* TRUE)∧(i5[24]* i5[25]))


(25) -> (19), if ((i5[25]* i5[19])∧(i5[25]* i7[19])∧(i5[25]* 0))


(25) -> (26), if ((i5[25]* i5[26])∧(i5[25]* i7[26])∧(i5[25]* i20[26]))


(26) -> (27), if ((i20[26] > 0* TRUE)∧(i7[26]* i7[27])∧(i20[26]* i20[27])∧(i5[26]* i5[27]))


(27) -> (19), if ((i7[27]* i7[19])∧(i5[27]* i5[19])∧(i20[27] - 1* 0))


(27) -> (26), if ((i20[27] - 1* i20[26])∧(i7[27]* i7[26])∧(i5[27]* i5[26]))


(28) -> (29), if ((i7[28] >= 100 && i5[28] > 0* TRUE)∧(i5[28]* i5[29])∧(i7[28]* i7[29]))


(29) -> (24), if ((i5[29] - 1* i5[24]))


(29) -> (30), if ((i5[29] - 1* i5[30]))


(30) -> (31), if ((i5[30]* i5[31])∧(i5[30] >= 100* TRUE))


(31) -> (24), if ((i5[31] - 1* i5[24]))


(31) -> (30), if ((i5[31] - 1* i5[30]))



The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(11) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair LOAD1100(i5, i7, 0) → LOAD83(i5, +(i7, 1)) the following chains were created:
  • We consider the chain LOAD949(i5[1], i7[1], 0) → LOAD1100(i5[1], i7[1], i7[1]), LOAD1100(i5[0], i7[0], 0) → LOAD83(i5[0], +(i7[0], 1)), LOAD83(i5[22], i7[22]) → COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22]) which results in the following constraint:

    (1)    (i7[1]=0i5[1]=i5[0]i7[1]=i7[0]i5[0]=i5[22]+(i7[0], 1)=i7[22]LOAD1100(i5[0], i7[0], 0)≥NonInfC∧LOAD1100(i5[0], i7[0], 0)≥LOAD83(i5[0], +(i7[0], 1))∧(UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (LOAD1100(i5[1], 0, 0)≥NonInfC∧LOAD1100(i5[1], 0, 0)≥LOAD83(i5[1], +(0, 1))∧(UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    ((UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥)∧[(-1)bso_99] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    ((UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥)∧[(-1)bso_99] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    ((UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥)∧[(-1)bso_99] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    ((UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥)∧0 = 0∧[(-1)bso_99] ≥ 0)



  • We consider the chain COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], -(i696[3], 1)), LOAD1100(i5[0], i7[0], 0) → LOAD83(i5[0], +(i7[0], 1)), LOAD83(i5[22], i7[22]) → COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22]) which results in the following constraint:

    (7)    (i7[3]=i7[0]i5[3]=i5[0]-(i696[3], 1)=0i5[0]=i5[22]+(i7[0], 1)=i7[22]LOAD1100(i5[0], i7[0], 0)≥NonInfC∧LOAD1100(i5[0], i7[0], 0)≥LOAD83(i5[0], +(i7[0], 1))∧(UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥))



    We simplified constraint (7) using rules (III), (IV) which results in the following new constraint:

    (8)    (-(i696[3], 1)=0LOAD1100(i5[3], i7[3], 0)≥NonInfC∧LOAD1100(i5[3], i7[3], 0)≥LOAD83(i5[3], +(i7[3], 1))∧(UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥))



    We simplified constraint (8) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (9)    (i696[3] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥)∧0 ≥ 0∧[(-1)bso_99] ≥ 0)



    We simplified constraint (9) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (10)    (i696[3] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥)∧0 ≥ 0∧[(-1)bso_99] ≥ 0)



    We simplified constraint (10) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (11)    (i696[3] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥)∧0 ≥ 0∧[(-1)bso_99] ≥ 0)



    We simplified constraint (11) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (12)    (i696[3] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥)∧0 = 0∧0 = 0∧0 ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_99] ≥ 0)



  • We consider the chain LOAD949(i5[1], i7[1], 0) → LOAD1100(i5[1], i7[1], i7[1]), LOAD1100(i5[0], i7[0], 0) → LOAD83(i5[0], +(i7[0], 1)), LOAD83(i5[28], i7[28]) → COND_LOAD831(&&(>=(i7[28], 100), >(i5[28], 0)), i5[28], i7[28]) which results in the following constraint:

    (13)    (i7[1]=0i5[1]=i5[0]i7[1]=i7[0]i5[0]=i5[28]+(i7[0], 1)=i7[28]LOAD1100(i5[0], i7[0], 0)≥NonInfC∧LOAD1100(i5[0], i7[0], 0)≥LOAD83(i5[0], +(i7[0], 1))∧(UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥))



    We simplified constraint (13) using rules (III), (IV) which results in the following new constraint:

    (14)    (LOAD1100(i5[1], 0, 0)≥NonInfC∧LOAD1100(i5[1], 0, 0)≥LOAD83(i5[1], +(0, 1))∧(UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥))



    We simplified constraint (14) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (15)    ((UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥)∧[(-1)bso_99] ≥ 0)



    We simplified constraint (15) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (16)    ((UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥)∧[(-1)bso_99] ≥ 0)



    We simplified constraint (16) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (17)    ((UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥)∧[(-1)bso_99] ≥ 0)



    We simplified constraint (17) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (18)    ((UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥)∧0 = 0∧[(-1)bso_99] ≥ 0)



  • We consider the chain COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], -(i696[3], 1)), LOAD1100(i5[0], i7[0], 0) → LOAD83(i5[0], +(i7[0], 1)), LOAD83(i5[28], i7[28]) → COND_LOAD831(&&(>=(i7[28], 100), >(i5[28], 0)), i5[28], i7[28]) which results in the following constraint:

    (19)    (i7[3]=i7[0]i5[3]=i5[0]-(i696[3], 1)=0i5[0]=i5[28]+(i7[0], 1)=i7[28]LOAD1100(i5[0], i7[0], 0)≥NonInfC∧LOAD1100(i5[0], i7[0], 0)≥LOAD83(i5[0], +(i7[0], 1))∧(UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥))



    We simplified constraint (19) using rules (III), (IV) which results in the following new constraint:

    (20)    (-(i696[3], 1)=0LOAD1100(i5[3], i7[3], 0)≥NonInfC∧LOAD1100(i5[3], i7[3], 0)≥LOAD83(i5[3], +(i7[3], 1))∧(UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥))



    We simplified constraint (20) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (21)    (i696[3] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥)∧0 ≥ 0∧[(-1)bso_99] ≥ 0)



    We simplified constraint (21) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (22)    (i696[3] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥)∧0 ≥ 0∧[(-1)bso_99] ≥ 0)



    We simplified constraint (22) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (23)    (i696[3] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥)∧0 ≥ 0∧[(-1)bso_99] ≥ 0)



    We simplified constraint (23) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (24)    (i696[3] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥)∧0 = 0∧0 = 0∧0 ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_99] ≥ 0)







For Pair LOAD949(i5, i7, 0) → LOAD1100(i5, i7, i7) the following chains were created:
  • We consider the chain LOAD949(i5[1], i7[1], 0) → LOAD1100(i5[1], i7[1], i7[1]), LOAD1100(i5[0], i7[0], 0) → LOAD83(i5[0], +(i7[0], 1)) which results in the following constraint:

    (25)    (i7[1]=0i5[1]=i5[0]i7[1]=i7[0]LOAD949(i5[1], i7[1], 0)≥NonInfC∧LOAD949(i5[1], i7[1], 0)≥LOAD1100(i5[1], i7[1], i7[1])∧(UIncreasing(LOAD1100(i5[1], i7[1], i7[1])), ≥))



    We simplified constraint (25) using rules (III), (IV) which results in the following new constraint:

    (26)    (LOAD949(i5[1], 0, 0)≥NonInfC∧LOAD949(i5[1], 0, 0)≥LOAD1100(i5[1], 0, 0)∧(UIncreasing(LOAD1100(i5[1], i7[1], i7[1])), ≥))



    We simplified constraint (26) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (27)    ((UIncreasing(LOAD1100(i5[1], i7[1], i7[1])), ≥)∧[(-1)bso_101] ≥ 0)



    We simplified constraint (27) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (28)    ((UIncreasing(LOAD1100(i5[1], i7[1], i7[1])), ≥)∧[(-1)bso_101] ≥ 0)



    We simplified constraint (28) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (29)    ((UIncreasing(LOAD1100(i5[1], i7[1], i7[1])), ≥)∧[(-1)bso_101] ≥ 0)



    We simplified constraint (29) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (30)    ((UIncreasing(LOAD1100(i5[1], i7[1], i7[1])), ≥)∧0 = 0∧[(-1)bso_101] ≥ 0)



  • We consider the chain LOAD949(i5[1], i7[1], 0) → LOAD1100(i5[1], i7[1], i7[1]), LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2]) which results in the following constraint:

    (31)    (i5[1]=i5[2]i7[1]=i7[2]i7[1]=i696[2]LOAD949(i5[1], i7[1], 0)≥NonInfC∧LOAD949(i5[1], i7[1], 0)≥LOAD1100(i5[1], i7[1], i7[1])∧(UIncreasing(LOAD1100(i5[1], i7[1], i7[1])), ≥))



    We simplified constraint (31) using rule (IV) which results in the following new constraint:

    (32)    (LOAD949(i5[1], i7[1], 0)≥NonInfC∧LOAD949(i5[1], i7[1], 0)≥LOAD1100(i5[1], i7[1], i7[1])∧(UIncreasing(LOAD1100(i5[1], i7[1], i7[1])), ≥))



    We simplified constraint (32) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (33)    ((UIncreasing(LOAD1100(i5[1], i7[1], i7[1])), ≥)∧[(-1)bso_101] ≥ 0)



    We simplified constraint (33) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (34)    ((UIncreasing(LOAD1100(i5[1], i7[1], i7[1])), ≥)∧[(-1)bso_101] ≥ 0)



    We simplified constraint (34) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (35)    ((UIncreasing(LOAD1100(i5[1], i7[1], i7[1])), ≥)∧[(-1)bso_101] ≥ 0)



    We simplified constraint (35) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (36)    ((UIncreasing(LOAD1100(i5[1], i7[1], i7[1])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_101] ≥ 0)







For Pair LOAD1100(i5, i7, i696) → COND_LOAD1100(>(i696, 0), i5, i7, i696) the following chains were created:
  • We consider the chain LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2]), COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], -(i696[3], 1)) which results in the following constraint:

    (37)    (i5[2]=i5[3]i7[2]=i7[3]i696[2]=i696[3]>(i696[2], 0)=TRUELOAD1100(i5[2], i7[2], i696[2])≥NonInfC∧LOAD1100(i5[2], i7[2], i696[2])≥COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])∧(UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥))



    We simplified constraint (37) using rule (IV) which results in the following new constraint:

    (38)    (>(i696[2], 0)=TRUELOAD1100(i5[2], i7[2], i696[2])≥NonInfC∧LOAD1100(i5[2], i7[2], i696[2])≥COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])∧(UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥))



    We simplified constraint (38) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (39)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥)∧[(-1)bni_102 + (-1)Bound*bni_102] + [bni_102]i5[2] ≥ 0∧[(-1)bso_103] ≥ 0)



    We simplified constraint (39) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (40)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥)∧[(-1)bni_102 + (-1)Bound*bni_102] + [bni_102]i5[2] ≥ 0∧[(-1)bso_103] ≥ 0)



    We simplified constraint (40) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (41)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥)∧[(-1)bni_102 + (-1)Bound*bni_102] + [bni_102]i5[2] ≥ 0∧[(-1)bso_103] ≥ 0)



    We simplified constraint (41) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (42)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥)∧0 = 0∧[bni_102] = 0∧[(-1)bni_102 + (-1)Bound*bni_102] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_103] ≥ 0)



    We simplified constraint (42) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (43)    (i696[2] ≥ 0 ⇒ (UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥)∧0 = 0∧[bni_102] = 0∧[(-1)bni_102 + (-1)Bound*bni_102] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_103] ≥ 0)







For Pair COND_LOAD1100(TRUE, i5, i7, i696) → LOAD1100(i5, i7, -(i696, 1)) the following chains were created:
  • We consider the chain LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2]), COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], -(i696[3], 1)), LOAD1100(i5[0], i7[0], 0) → LOAD83(i5[0], +(i7[0], 1)) which results in the following constraint:

    (44)    (i5[2]=i5[3]i7[2]=i7[3]i696[2]=i696[3]>(i696[2], 0)=TRUEi7[3]=i7[0]i5[3]=i5[0]-(i696[3], 1)=0COND_LOAD1100(TRUE, i5[3], i7[3], i696[3])≥NonInfC∧COND_LOAD1100(TRUE, i5[3], i7[3], i696[3])≥LOAD1100(i5[3], i7[3], -(i696[3], 1))∧(UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥))



    We simplified constraint (44) using rules (III), (IV) which results in the following new constraint:

    (45)    (>(i696[2], 0)=TRUE-(i696[2], 1)=0COND_LOAD1100(TRUE, i5[2], i7[2], i696[2])≥NonInfC∧COND_LOAD1100(TRUE, i5[2], i7[2], i696[2])≥LOAD1100(i5[2], i7[2], -(i696[2], 1))∧(UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥))



    We simplified constraint (45) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (46)    (i696[2] + [-1] ≥ 0∧i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧[(-1)bni_104 + (-1)Bound*bni_104] + [bni_104]i5[2] ≥ 0∧[(-1)bso_105] ≥ 0)



    We simplified constraint (46) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (47)    (i696[2] + [-1] ≥ 0∧i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧[(-1)bni_104 + (-1)Bound*bni_104] + [bni_104]i5[2] ≥ 0∧[(-1)bso_105] ≥ 0)



    We simplified constraint (47) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (48)    (i696[2] + [-1] ≥ 0∧i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧[(-1)bni_104 + (-1)Bound*bni_104] + [bni_104]i5[2] ≥ 0∧[(-1)bso_105] ≥ 0)



    We simplified constraint (48) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (49)    (i696[2] + [-1] ≥ 0∧i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧0 = 0∧[bni_104] = 0∧[(-1)bni_104 + (-1)Bound*bni_104] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_105] ≥ 0)



    We simplified constraint (49) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (50)    (i696[2] ≥ 0∧i696[2] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧0 = 0∧[bni_104] = 0∧[(-1)bni_104 + (-1)Bound*bni_104] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_105] ≥ 0)



  • We consider the chain LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2]), COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], -(i696[3], 1)), LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2]) which results in the following constraint:

    (51)    (i5[2]=i5[3]i7[2]=i7[3]i696[2]=i696[3]>(i696[2], 0)=TRUEi7[3]=i7[2]1-(i696[3], 1)=i696[2]1i5[3]=i5[2]1COND_LOAD1100(TRUE, i5[3], i7[3], i696[3])≥NonInfC∧COND_LOAD1100(TRUE, i5[3], i7[3], i696[3])≥LOAD1100(i5[3], i7[3], -(i696[3], 1))∧(UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥))



    We simplified constraint (51) using rules (III), (IV) which results in the following new constraint:

    (52)    (>(i696[2], 0)=TRUECOND_LOAD1100(TRUE, i5[2], i7[2], i696[2])≥NonInfC∧COND_LOAD1100(TRUE, i5[2], i7[2], i696[2])≥LOAD1100(i5[2], i7[2], -(i696[2], 1))∧(UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥))



    We simplified constraint (52) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (53)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧[(-1)bni_104 + (-1)Bound*bni_104] + [bni_104]i5[2] ≥ 0∧[(-1)bso_105] ≥ 0)



    We simplified constraint (53) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (54)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧[(-1)bni_104 + (-1)Bound*bni_104] + [bni_104]i5[2] ≥ 0∧[(-1)bso_105] ≥ 0)



    We simplified constraint (54) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (55)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧[(-1)bni_104 + (-1)Bound*bni_104] + [bni_104]i5[2] ≥ 0∧[(-1)bso_105] ≥ 0)



    We simplified constraint (55) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (56)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧0 = 0∧[bni_104] = 0∧[(-1)bni_104 + (-1)Bound*bni_104] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_105] ≥ 0)



    We simplified constraint (56) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (57)    (i696[2] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧0 = 0∧[bni_104] = 0∧[(-1)bni_104 + (-1)Bound*bni_104] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_105] ≥ 0)







For Pair LOAD768(i5, i7, 0) → LOAD949(i5, i7, i7) the following chains were created:
  • We consider the chain LOAD768(i5[4], i7[4], 0) → LOAD949(i5[4], i7[4], i7[4]), LOAD949(i5[1], i7[1], 0) → LOAD1100(i5[1], i7[1], i7[1]) which results in the following constraint:

    (58)    (i5[4]=i5[1]i7[4]=0i7[4]=i7[1]LOAD768(i5[4], i7[4], 0)≥NonInfC∧LOAD768(i5[4], i7[4], 0)≥LOAD949(i5[4], i7[4], i7[4])∧(UIncreasing(LOAD949(i5[4], i7[4], i7[4])), ≥))



    We simplified constraint (58) using rules (III), (IV) which results in the following new constraint:

    (59)    (LOAD768(i5[4], 0, 0)≥NonInfC∧LOAD768(i5[4], 0, 0)≥LOAD949(i5[4], 0, 0)∧(UIncreasing(LOAD949(i5[4], i7[4], i7[4])), ≥))



    We simplified constraint (59) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (60)    ((UIncreasing(LOAD949(i5[4], i7[4], i7[4])), ≥)∧[(-1)bso_107] ≥ 0)



    We simplified constraint (60) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (61)    ((UIncreasing(LOAD949(i5[4], i7[4], i7[4])), ≥)∧[(-1)bso_107] ≥ 0)



    We simplified constraint (61) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (62)    ((UIncreasing(LOAD949(i5[4], i7[4], i7[4])), ≥)∧[(-1)bso_107] ≥ 0)



    We simplified constraint (62) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (63)    ((UIncreasing(LOAD949(i5[4], i7[4], i7[4])), ≥)∧0 = 0∧[(-1)bso_107] ≥ 0)



  • We consider the chain LOAD768(i5[4], i7[4], 0) → LOAD949(i5[4], i7[4], i7[4]), LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5]) which results in the following constraint:

    (64)    (i7[4]=i7[5]i7[4]=i605[5]i5[4]=i5[5]LOAD768(i5[4], i7[4], 0)≥NonInfC∧LOAD768(i5[4], i7[4], 0)≥LOAD949(i5[4], i7[4], i7[4])∧(UIncreasing(LOAD949(i5[4], i7[4], i7[4])), ≥))



    We simplified constraint (64) using rule (IV) which results in the following new constraint:

    (65)    (LOAD768(i5[4], i7[4], 0)≥NonInfC∧LOAD768(i5[4], i7[4], 0)≥LOAD949(i5[4], i7[4], i7[4])∧(UIncreasing(LOAD949(i5[4], i7[4], i7[4])), ≥))



    We simplified constraint (65) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (66)    ((UIncreasing(LOAD949(i5[4], i7[4], i7[4])), ≥)∧[(-1)bso_107] ≥ 0)



    We simplified constraint (66) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (67)    ((UIncreasing(LOAD949(i5[4], i7[4], i7[4])), ≥)∧[(-1)bso_107] ≥ 0)



    We simplified constraint (67) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (68)    ((UIncreasing(LOAD949(i5[4], i7[4], i7[4])), ≥)∧[(-1)bso_107] ≥ 0)



    We simplified constraint (68) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (69)    ((UIncreasing(LOAD949(i5[4], i7[4], i7[4])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_107] ≥ 0)







For Pair LOAD949(i5, i7, i605) → COND_LOAD949(>(i605, 0), i5, i7, i605) the following chains were created:
  • We consider the chain LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5]), COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], -(i605[6], 1)) which results in the following constraint:

    (70)    (i5[5]=i5[6]i7[5]=i7[6]i605[5]=i605[6]>(i605[5], 0)=TRUELOAD949(i5[5], i7[5], i605[5])≥NonInfC∧LOAD949(i5[5], i7[5], i605[5])≥COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])∧(UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥))



    We simplified constraint (70) using rule (IV) which results in the following new constraint:

    (71)    (>(i605[5], 0)=TRUELOAD949(i5[5], i7[5], i605[5])≥NonInfC∧LOAD949(i5[5], i7[5], i605[5])≥COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])∧(UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥))



    We simplified constraint (71) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (72)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥)∧[(-1)bni_108 + (-1)Bound*bni_108] + [bni_108]i5[5] ≥ 0∧[(-1)bso_109] ≥ 0)



    We simplified constraint (72) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (73)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥)∧[(-1)bni_108 + (-1)Bound*bni_108] + [bni_108]i5[5] ≥ 0∧[(-1)bso_109] ≥ 0)



    We simplified constraint (73) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (74)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥)∧[(-1)bni_108 + (-1)Bound*bni_108] + [bni_108]i5[5] ≥ 0∧[(-1)bso_109] ≥ 0)



    We simplified constraint (74) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (75)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥)∧0 = 0∧[bni_108] = 0∧[(-1)bni_108 + (-1)Bound*bni_108] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_109] ≥ 0)



    We simplified constraint (75) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (76)    (i605[5] ≥ 0 ⇒ (UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥)∧0 = 0∧[bni_108] = 0∧[(-1)bni_108 + (-1)Bound*bni_108] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_109] ≥ 0)







For Pair COND_LOAD949(TRUE, i5, i7, i605) → LOAD949(i5, i7, -(i605, 1)) the following chains were created:
  • We consider the chain LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5]), COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], -(i605[6], 1)), LOAD949(i5[1], i7[1], 0) → LOAD1100(i5[1], i7[1], i7[1]) which results in the following constraint:

    (77)    (i5[5]=i5[6]i7[5]=i7[6]i605[5]=i605[6]>(i605[5], 0)=TRUE-(i605[6], 1)=0i5[6]=i5[1]i7[6]=i7[1]COND_LOAD949(TRUE, i5[6], i7[6], i605[6])≥NonInfC∧COND_LOAD949(TRUE, i5[6], i7[6], i605[6])≥LOAD949(i5[6], i7[6], -(i605[6], 1))∧(UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥))



    We simplified constraint (77) using rules (III), (IV) which results in the following new constraint:

    (78)    (>(i605[5], 0)=TRUE-(i605[5], 1)=0COND_LOAD949(TRUE, i5[5], i7[5], i605[5])≥NonInfC∧COND_LOAD949(TRUE, i5[5], i7[5], i605[5])≥LOAD949(i5[5], i7[5], -(i605[5], 1))∧(UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥))



    We simplified constraint (78) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (79)    (i605[5] + [-1] ≥ 0∧i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧[(-1)bni_110 + (-1)Bound*bni_110] + [bni_110]i5[5] ≥ 0∧[(-1)bso_111] ≥ 0)



    We simplified constraint (79) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (80)    (i605[5] + [-1] ≥ 0∧i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧[(-1)bni_110 + (-1)Bound*bni_110] + [bni_110]i5[5] ≥ 0∧[(-1)bso_111] ≥ 0)



    We simplified constraint (80) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (81)    (i605[5] + [-1] ≥ 0∧i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧[(-1)bni_110 + (-1)Bound*bni_110] + [bni_110]i5[5] ≥ 0∧[(-1)bso_111] ≥ 0)



    We simplified constraint (81) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (82)    (i605[5] + [-1] ≥ 0∧i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧0 = 0∧[bni_110] = 0∧[(-1)bni_110 + (-1)Bound*bni_110] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_111] ≥ 0)



    We simplified constraint (82) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (83)    (i605[5] ≥ 0∧i605[5] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧0 = 0∧[bni_110] = 0∧[(-1)bni_110 + (-1)Bound*bni_110] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_111] ≥ 0)



  • We consider the chain LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5]), COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], -(i605[6], 1)), LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5]) which results in the following constraint:

    (84)    (i5[5]=i5[6]i7[5]=i7[6]i605[5]=i605[6]>(i605[5], 0)=TRUEi7[6]=i7[5]1-(i605[6], 1)=i605[5]1i5[6]=i5[5]1COND_LOAD949(TRUE, i5[6], i7[6], i605[6])≥NonInfC∧COND_LOAD949(TRUE, i5[6], i7[6], i605[6])≥LOAD949(i5[6], i7[6], -(i605[6], 1))∧(UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥))



    We simplified constraint (84) using rules (III), (IV) which results in the following new constraint:

    (85)    (>(i605[5], 0)=TRUECOND_LOAD949(TRUE, i5[5], i7[5], i605[5])≥NonInfC∧COND_LOAD949(TRUE, i5[5], i7[5], i605[5])≥LOAD949(i5[5], i7[5], -(i605[5], 1))∧(UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥))



    We simplified constraint (85) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (86)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧[(-1)bni_110 + (-1)Bound*bni_110] + [bni_110]i5[5] ≥ 0∧[(-1)bso_111] ≥ 0)



    We simplified constraint (86) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (87)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧[(-1)bni_110 + (-1)Bound*bni_110] + [bni_110]i5[5] ≥ 0∧[(-1)bso_111] ≥ 0)



    We simplified constraint (87) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (88)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧[(-1)bni_110 + (-1)Bound*bni_110] + [bni_110]i5[5] ≥ 0∧[(-1)bso_111] ≥ 0)



    We simplified constraint (88) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (89)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧0 = 0∧[bni_110] = 0∧[(-1)bni_110 + (-1)Bound*bni_110] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_111] ≥ 0)



    We simplified constraint (89) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (90)    (i605[5] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧0 = 0∧[bni_110] = 0∧[(-1)bni_110 + (-1)Bound*bni_110] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_111] ≥ 0)







For Pair LOAD608(i5, i7, 0) → LOAD768(i5, i7, i7) the following chains were created:
  • We consider the chain LOAD608(i5[7], i7[7], 0) → LOAD768(i5[7], i7[7], i7[7]), LOAD768(i5[4], i7[4], 0) → LOAD949(i5[4], i7[4], i7[4]) which results in the following constraint:

    (91)    (i7[7]=0i7[7]=i7[4]i5[7]=i5[4]LOAD608(i5[7], i7[7], 0)≥NonInfC∧LOAD608(i5[7], i7[7], 0)≥LOAD768(i5[7], i7[7], i7[7])∧(UIncreasing(LOAD768(i5[7], i7[7], i7[7])), ≥))



    We simplified constraint (91) using rules (III), (IV) which results in the following new constraint:

    (92)    (LOAD608(i5[7], 0, 0)≥NonInfC∧LOAD608(i5[7], 0, 0)≥LOAD768(i5[7], 0, 0)∧(UIncreasing(LOAD768(i5[7], i7[7], i7[7])), ≥))



    We simplified constraint (92) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (93)    ((UIncreasing(LOAD768(i5[7], i7[7], i7[7])), ≥)∧[(-1)bso_113] ≥ 0)



    We simplified constraint (93) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (94)    ((UIncreasing(LOAD768(i5[7], i7[7], i7[7])), ≥)∧[(-1)bso_113] ≥ 0)



    We simplified constraint (94) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (95)    ((UIncreasing(LOAD768(i5[7], i7[7], i7[7])), ≥)∧[(-1)bso_113] ≥ 0)



    We simplified constraint (95) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (96)    ((UIncreasing(LOAD768(i5[7], i7[7], i7[7])), ≥)∧0 = 0∧[(-1)bso_113] ≥ 0)



  • We consider the chain LOAD608(i5[7], i7[7], 0) → LOAD768(i5[7], i7[7], i7[7]), LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8]) which results in the following constraint:

    (97)    (i5[7]=i5[8]i7[7]=i436[8]i7[7]=i7[8]LOAD608(i5[7], i7[7], 0)≥NonInfC∧LOAD608(i5[7], i7[7], 0)≥LOAD768(i5[7], i7[7], i7[7])∧(UIncreasing(LOAD768(i5[7], i7[7], i7[7])), ≥))



    We simplified constraint (97) using rule (IV) which results in the following new constraint:

    (98)    (LOAD608(i5[7], i7[7], 0)≥NonInfC∧LOAD608(i5[7], i7[7], 0)≥LOAD768(i5[7], i7[7], i7[7])∧(UIncreasing(LOAD768(i5[7], i7[7], i7[7])), ≥))



    We simplified constraint (98) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (99)    ((UIncreasing(LOAD768(i5[7], i7[7], i7[7])), ≥)∧[(-1)bso_113] ≥ 0)



    We simplified constraint (99) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (100)    ((UIncreasing(LOAD768(i5[7], i7[7], i7[7])), ≥)∧[(-1)bso_113] ≥ 0)



    We simplified constraint (100) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (101)    ((UIncreasing(LOAD768(i5[7], i7[7], i7[7])), ≥)∧[(-1)bso_113] ≥ 0)



    We simplified constraint (101) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (102)    ((UIncreasing(LOAD768(i5[7], i7[7], i7[7])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_113] ≥ 0)







For Pair LOAD768(i5, i7, i436) → COND_LOAD768(>(i436, 0), i5, i7, i436) the following chains were created:
  • We consider the chain LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8]), COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], -(i436[9], 1)) which results in the following constraint:

    (103)    (i7[8]=i7[9]i436[8]=i436[9]i5[8]=i5[9]>(i436[8], 0)=TRUELOAD768(i5[8], i7[8], i436[8])≥NonInfC∧LOAD768(i5[8], i7[8], i436[8])≥COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])∧(UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥))



    We simplified constraint (103) using rule (IV) which results in the following new constraint:

    (104)    (>(i436[8], 0)=TRUELOAD768(i5[8], i7[8], i436[8])≥NonInfC∧LOAD768(i5[8], i7[8], i436[8])≥COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])∧(UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥))



    We simplified constraint (104) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (105)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥)∧[(-1)bni_114 + (-1)Bound*bni_114] + [bni_114]i5[8] ≥ 0∧[(-1)bso_115] ≥ 0)



    We simplified constraint (105) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (106)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥)∧[(-1)bni_114 + (-1)Bound*bni_114] + [bni_114]i5[8] ≥ 0∧[(-1)bso_115] ≥ 0)



    We simplified constraint (106) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (107)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥)∧[(-1)bni_114 + (-1)Bound*bni_114] + [bni_114]i5[8] ≥ 0∧[(-1)bso_115] ≥ 0)



    We simplified constraint (107) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (108)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥)∧0 = 0∧[bni_114] = 0∧[(-1)bni_114 + (-1)Bound*bni_114] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_115] ≥ 0)



    We simplified constraint (108) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (109)    (i436[8] ≥ 0 ⇒ (UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥)∧0 = 0∧[bni_114] = 0∧[(-1)bni_114 + (-1)Bound*bni_114] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_115] ≥ 0)







For Pair COND_LOAD768(TRUE, i5, i7, i436) → LOAD768(i5, i7, -(i436, 1)) the following chains were created:
  • We consider the chain LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8]), COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], -(i436[9], 1)), LOAD768(i5[4], i7[4], 0) → LOAD949(i5[4], i7[4], i7[4]) which results in the following constraint:

    (110)    (i7[8]=i7[9]i436[8]=i436[9]i5[8]=i5[9]>(i436[8], 0)=TRUEi7[9]=i7[4]-(i436[9], 1)=0i5[9]=i5[4]COND_LOAD768(TRUE, i5[9], i7[9], i436[9])≥NonInfC∧COND_LOAD768(TRUE, i5[9], i7[9], i436[9])≥LOAD768(i5[9], i7[9], -(i436[9], 1))∧(UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥))



    We simplified constraint (110) using rules (III), (IV) which results in the following new constraint:

    (111)    (>(i436[8], 0)=TRUE-(i436[8], 1)=0COND_LOAD768(TRUE, i5[8], i7[8], i436[8])≥NonInfC∧COND_LOAD768(TRUE, i5[8], i7[8], i436[8])≥LOAD768(i5[8], i7[8], -(i436[8], 1))∧(UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥))



    We simplified constraint (111) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (112)    (i436[8] + [-1] ≥ 0∧i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧[(-1)bni_116 + (-1)Bound*bni_116] + [bni_116]i5[8] ≥ 0∧[(-1)bso_117] ≥ 0)



    We simplified constraint (112) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (113)    (i436[8] + [-1] ≥ 0∧i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧[(-1)bni_116 + (-1)Bound*bni_116] + [bni_116]i5[8] ≥ 0∧[(-1)bso_117] ≥ 0)



    We simplified constraint (113) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (114)    (i436[8] + [-1] ≥ 0∧i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧[(-1)bni_116 + (-1)Bound*bni_116] + [bni_116]i5[8] ≥ 0∧[(-1)bso_117] ≥ 0)



    We simplified constraint (114) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (115)    (i436[8] + [-1] ≥ 0∧i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧0 = 0∧[bni_116] = 0∧[(-1)bni_116 + (-1)Bound*bni_116] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_117] ≥ 0)



    We simplified constraint (115) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (116)    (i436[8] ≥ 0∧i436[8] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧0 = 0∧[bni_116] = 0∧[(-1)bni_116 + (-1)Bound*bni_116] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_117] ≥ 0)



  • We consider the chain LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8]), COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], -(i436[9], 1)), LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8]) which results in the following constraint:

    (117)    (i7[8]=i7[9]i436[8]=i436[9]i5[8]=i5[9]>(i436[8], 0)=TRUE-(i436[9], 1)=i436[8]1i7[9]=i7[8]1i5[9]=i5[8]1COND_LOAD768(TRUE, i5[9], i7[9], i436[9])≥NonInfC∧COND_LOAD768(TRUE, i5[9], i7[9], i436[9])≥LOAD768(i5[9], i7[9], -(i436[9], 1))∧(UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥))



    We simplified constraint (117) using rules (III), (IV) which results in the following new constraint:

    (118)    (>(i436[8], 0)=TRUECOND_LOAD768(TRUE, i5[8], i7[8], i436[8])≥NonInfC∧COND_LOAD768(TRUE, i5[8], i7[8], i436[8])≥LOAD768(i5[8], i7[8], -(i436[8], 1))∧(UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥))



    We simplified constraint (118) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (119)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧[(-1)bni_116 + (-1)Bound*bni_116] + [bni_116]i5[8] ≥ 0∧[(-1)bso_117] ≥ 0)



    We simplified constraint (119) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (120)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧[(-1)bni_116 + (-1)Bound*bni_116] + [bni_116]i5[8] ≥ 0∧[(-1)bso_117] ≥ 0)



    We simplified constraint (120) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (121)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧[(-1)bni_116 + (-1)Bound*bni_116] + [bni_116]i5[8] ≥ 0∧[(-1)bso_117] ≥ 0)



    We simplified constraint (121) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (122)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧0 = 0∧[bni_116] = 0∧[(-1)bni_116 + (-1)Bound*bni_116] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_117] ≥ 0)



    We simplified constraint (122) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (123)    (i436[8] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧0 = 0∧[bni_116] = 0∧[(-1)bni_116 + (-1)Bound*bni_116] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_117] ≥ 0)







For Pair LOAD484(i5, i7, 0) → LOAD608(i5, i7, i7) the following chains were created:
  • We consider the chain LOAD484(i5[10], i7[10], 0) → LOAD608(i5[10], i7[10], i7[10]), LOAD608(i5[7], i7[7], 0) → LOAD768(i5[7], i7[7], i7[7]) which results in the following constraint:

    (124)    (i5[10]=i5[7]i7[10]=i7[7]i7[10]=0LOAD484(i5[10], i7[10], 0)≥NonInfC∧LOAD484(i5[10], i7[10], 0)≥LOAD608(i5[10], i7[10], i7[10])∧(UIncreasing(LOAD608(i5[10], i7[10], i7[10])), ≥))



    We simplified constraint (124) using rules (III), (IV) which results in the following new constraint:

    (125)    (LOAD484(i5[10], 0, 0)≥NonInfC∧LOAD484(i5[10], 0, 0)≥LOAD608(i5[10], 0, 0)∧(UIncreasing(LOAD608(i5[10], i7[10], i7[10])), ≥))



    We simplified constraint (125) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (126)    ((UIncreasing(LOAD608(i5[10], i7[10], i7[10])), ≥)∧[(-1)bso_119] ≥ 0)



    We simplified constraint (126) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (127)    ((UIncreasing(LOAD608(i5[10], i7[10], i7[10])), ≥)∧[(-1)bso_119] ≥ 0)



    We simplified constraint (127) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (128)    ((UIncreasing(LOAD608(i5[10], i7[10], i7[10])), ≥)∧[(-1)bso_119] ≥ 0)



    We simplified constraint (128) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (129)    ((UIncreasing(LOAD608(i5[10], i7[10], i7[10])), ≥)∧0 = 0∧[(-1)bso_119] ≥ 0)



  • We consider the chain LOAD484(i5[10], i7[10], 0) → LOAD608(i5[10], i7[10], i7[10]), LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11]) which results in the following constraint:

    (130)    (i7[10]=i7[11]i5[10]=i5[11]i7[10]=i296[11]LOAD484(i5[10], i7[10], 0)≥NonInfC∧LOAD484(i5[10], i7[10], 0)≥LOAD608(i5[10], i7[10], i7[10])∧(UIncreasing(LOAD608(i5[10], i7[10], i7[10])), ≥))



    We simplified constraint (130) using rule (IV) which results in the following new constraint:

    (131)    (LOAD484(i5[10], i7[10], 0)≥NonInfC∧LOAD484(i5[10], i7[10], 0)≥LOAD608(i5[10], i7[10], i7[10])∧(UIncreasing(LOAD608(i5[10], i7[10], i7[10])), ≥))



    We simplified constraint (131) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (132)    ((UIncreasing(LOAD608(i5[10], i7[10], i7[10])), ≥)∧[(-1)bso_119] ≥ 0)



    We simplified constraint (132) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (133)    ((UIncreasing(LOAD608(i5[10], i7[10], i7[10])), ≥)∧[(-1)bso_119] ≥ 0)



    We simplified constraint (133) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (134)    ((UIncreasing(LOAD608(i5[10], i7[10], i7[10])), ≥)∧[(-1)bso_119] ≥ 0)



    We simplified constraint (134) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (135)    ((UIncreasing(LOAD608(i5[10], i7[10], i7[10])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_119] ≥ 0)







For Pair LOAD608(i5, i7, i296) → COND_LOAD608(>(i296, 0), i5, i7, i296) the following chains were created:
  • We consider the chain LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11]), COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], -(i296[12], 1)) which results in the following constraint:

    (136)    (>(i296[11], 0)=TRUEi7[11]=i7[12]i296[11]=i296[12]i5[11]=i5[12]LOAD608(i5[11], i7[11], i296[11])≥NonInfC∧LOAD608(i5[11], i7[11], i296[11])≥COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])∧(UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥))



    We simplified constraint (136) using rule (IV) which results in the following new constraint:

    (137)    (>(i296[11], 0)=TRUELOAD608(i5[11], i7[11], i296[11])≥NonInfC∧LOAD608(i5[11], i7[11], i296[11])≥COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])∧(UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥))



    We simplified constraint (137) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (138)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥)∧[(-1)bni_120 + (-1)Bound*bni_120] + [bni_120]i5[11] ≥ 0∧[(-1)bso_121] ≥ 0)



    We simplified constraint (138) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (139)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥)∧[(-1)bni_120 + (-1)Bound*bni_120] + [bni_120]i5[11] ≥ 0∧[(-1)bso_121] ≥ 0)



    We simplified constraint (139) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (140)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥)∧[(-1)bni_120 + (-1)Bound*bni_120] + [bni_120]i5[11] ≥ 0∧[(-1)bso_121] ≥ 0)



    We simplified constraint (140) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (141)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥)∧0 = 0∧[bni_120] = 0∧[(-1)bni_120 + (-1)Bound*bni_120] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_121] ≥ 0)



    We simplified constraint (141) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (142)    (i296[11] ≥ 0 ⇒ (UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥)∧0 = 0∧[bni_120] = 0∧[(-1)bni_120 + (-1)Bound*bni_120] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_121] ≥ 0)







For Pair COND_LOAD608(TRUE, i5, i7, i296) → LOAD608(i5, i7, -(i296, 1)) the following chains were created:
  • We consider the chain LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11]), COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], -(i296[12], 1)), LOAD608(i5[7], i7[7], 0) → LOAD768(i5[7], i7[7], i7[7]) which results in the following constraint:

    (143)    (>(i296[11], 0)=TRUEi7[11]=i7[12]i296[11]=i296[12]i5[11]=i5[12]-(i296[12], 1)=0i7[12]=i7[7]i5[12]=i5[7]COND_LOAD608(TRUE, i5[12], i7[12], i296[12])≥NonInfC∧COND_LOAD608(TRUE, i5[12], i7[12], i296[12])≥LOAD608(i5[12], i7[12], -(i296[12], 1))∧(UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥))



    We simplified constraint (143) using rules (III), (IV) which results in the following new constraint:

    (144)    (>(i296[11], 0)=TRUE-(i296[11], 1)=0COND_LOAD608(TRUE, i5[11], i7[11], i296[11])≥NonInfC∧COND_LOAD608(TRUE, i5[11], i7[11], i296[11])≥LOAD608(i5[11], i7[11], -(i296[11], 1))∧(UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥))



    We simplified constraint (144) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (145)    (i296[11] + [-1] ≥ 0∧i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧[(-1)bni_122 + (-1)Bound*bni_122] + [bni_122]i5[11] ≥ 0∧[(-1)bso_123] ≥ 0)



    We simplified constraint (145) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (146)    (i296[11] + [-1] ≥ 0∧i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧[(-1)bni_122 + (-1)Bound*bni_122] + [bni_122]i5[11] ≥ 0∧[(-1)bso_123] ≥ 0)



    We simplified constraint (146) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (147)    (i296[11] + [-1] ≥ 0∧i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧[(-1)bni_122 + (-1)Bound*bni_122] + [bni_122]i5[11] ≥ 0∧[(-1)bso_123] ≥ 0)



    We simplified constraint (147) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (148)    (i296[11] + [-1] ≥ 0∧i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧0 = 0∧[bni_122] = 0∧[(-1)bni_122 + (-1)Bound*bni_122] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_123] ≥ 0)



    We simplified constraint (148) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (149)    (i296[11] ≥ 0∧i296[11] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧0 = 0∧[bni_122] = 0∧[(-1)bni_122 + (-1)Bound*bni_122] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_123] ≥ 0)



  • We consider the chain LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11]), COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], -(i296[12], 1)), LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11]) which results in the following constraint:

    (150)    (>(i296[11], 0)=TRUEi7[11]=i7[12]i296[11]=i296[12]i5[11]=i5[12]-(i296[12], 1)=i296[11]1i5[12]=i5[11]1i7[12]=i7[11]1COND_LOAD608(TRUE, i5[12], i7[12], i296[12])≥NonInfC∧COND_LOAD608(TRUE, i5[12], i7[12], i296[12])≥LOAD608(i5[12], i7[12], -(i296[12], 1))∧(UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥))



    We simplified constraint (150) using rules (III), (IV) which results in the following new constraint:

    (151)    (>(i296[11], 0)=TRUECOND_LOAD608(TRUE, i5[11], i7[11], i296[11])≥NonInfC∧COND_LOAD608(TRUE, i5[11], i7[11], i296[11])≥LOAD608(i5[11], i7[11], -(i296[11], 1))∧(UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥))



    We simplified constraint (151) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (152)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧[(-1)bni_122 + (-1)Bound*bni_122] + [bni_122]i5[11] ≥ 0∧[(-1)bso_123] ≥ 0)



    We simplified constraint (152) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (153)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧[(-1)bni_122 + (-1)Bound*bni_122] + [bni_122]i5[11] ≥ 0∧[(-1)bso_123] ≥ 0)



    We simplified constraint (153) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (154)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧[(-1)bni_122 + (-1)Bound*bni_122] + [bni_122]i5[11] ≥ 0∧[(-1)bso_123] ≥ 0)



    We simplified constraint (154) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (155)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧0 = 0∧[bni_122] = 0∧[(-1)bni_122 + (-1)Bound*bni_122] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_123] ≥ 0)



    We simplified constraint (155) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (156)    (i296[11] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧0 = 0∧[bni_122] = 0∧[(-1)bni_122 + (-1)Bound*bni_122] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_123] ≥ 0)







For Pair LOAD363(i5, i7, 0) → LOAD484(i5, i7, i7) the following chains were created:
  • We consider the chain LOAD363(i5[13], i7[13], 0) → LOAD484(i5[13], i7[13], i7[13]), LOAD484(i5[10], i7[10], 0) → LOAD608(i5[10], i7[10], i7[10]) which results in the following constraint:

    (157)    (i5[13]=i5[10]i7[13]=0i7[13]=i7[10]LOAD363(i5[13], i7[13], 0)≥NonInfC∧LOAD363(i5[13], i7[13], 0)≥LOAD484(i5[13], i7[13], i7[13])∧(UIncreasing(LOAD484(i5[13], i7[13], i7[13])), ≥))



    We simplified constraint (157) using rules (III), (IV) which results in the following new constraint:

    (158)    (LOAD363(i5[13], 0, 0)≥NonInfC∧LOAD363(i5[13], 0, 0)≥LOAD484(i5[13], 0, 0)∧(UIncreasing(LOAD484(i5[13], i7[13], i7[13])), ≥))



    We simplified constraint (158) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (159)    ((UIncreasing(LOAD484(i5[13], i7[13], i7[13])), ≥)∧[(-1)bso_125] ≥ 0)



    We simplified constraint (159) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (160)    ((UIncreasing(LOAD484(i5[13], i7[13], i7[13])), ≥)∧[(-1)bso_125] ≥ 0)



    We simplified constraint (160) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (161)    ((UIncreasing(LOAD484(i5[13], i7[13], i7[13])), ≥)∧[(-1)bso_125] ≥ 0)



    We simplified constraint (161) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (162)    ((UIncreasing(LOAD484(i5[13], i7[13], i7[13])), ≥)∧0 = 0∧[(-1)bso_125] ≥ 0)



  • We consider the chain LOAD363(i5[13], i7[13], 0) → LOAD484(i5[13], i7[13], i7[13]), LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14]) which results in the following constraint:

    (163)    (i7[13]=i187[14]i5[13]=i5[14]i7[13]=i7[14]LOAD363(i5[13], i7[13], 0)≥NonInfC∧LOAD363(i5[13], i7[13], 0)≥LOAD484(i5[13], i7[13], i7[13])∧(UIncreasing(LOAD484(i5[13], i7[13], i7[13])), ≥))



    We simplified constraint (163) using rule (IV) which results in the following new constraint:

    (164)    (LOAD363(i5[13], i7[13], 0)≥NonInfC∧LOAD363(i5[13], i7[13], 0)≥LOAD484(i5[13], i7[13], i7[13])∧(UIncreasing(LOAD484(i5[13], i7[13], i7[13])), ≥))



    We simplified constraint (164) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (165)    ((UIncreasing(LOAD484(i5[13], i7[13], i7[13])), ≥)∧[(-1)bso_125] ≥ 0)



    We simplified constraint (165) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (166)    ((UIncreasing(LOAD484(i5[13], i7[13], i7[13])), ≥)∧[(-1)bso_125] ≥ 0)



    We simplified constraint (166) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (167)    ((UIncreasing(LOAD484(i5[13], i7[13], i7[13])), ≥)∧[(-1)bso_125] ≥ 0)



    We simplified constraint (167) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (168)    ((UIncreasing(LOAD484(i5[13], i7[13], i7[13])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_125] ≥ 0)







For Pair LOAD484(i5, i7, i187) → COND_LOAD484(>(i187, 0), i5, i7, i187) the following chains were created:
  • We consider the chain LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14]), COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], -(i187[15], 1)) which results in the following constraint:

    (169)    (i7[14]=i7[15]i5[14]=i5[15]i187[14]=i187[15]>(i187[14], 0)=TRUELOAD484(i5[14], i7[14], i187[14])≥NonInfC∧LOAD484(i5[14], i7[14], i187[14])≥COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])∧(UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥))



    We simplified constraint (169) using rule (IV) which results in the following new constraint:

    (170)    (>(i187[14], 0)=TRUELOAD484(i5[14], i7[14], i187[14])≥NonInfC∧LOAD484(i5[14], i7[14], i187[14])≥COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])∧(UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥))



    We simplified constraint (170) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (171)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥)∧[(-1)bni_126 + (-1)Bound*bni_126] + [bni_126]i5[14] ≥ 0∧[(-1)bso_127] ≥ 0)



    We simplified constraint (171) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (172)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥)∧[(-1)bni_126 + (-1)Bound*bni_126] + [bni_126]i5[14] ≥ 0∧[(-1)bso_127] ≥ 0)



    We simplified constraint (172) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (173)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥)∧[(-1)bni_126 + (-1)Bound*bni_126] + [bni_126]i5[14] ≥ 0∧[(-1)bso_127] ≥ 0)



    We simplified constraint (173) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (174)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥)∧0 = 0∧[bni_126] = 0∧[(-1)bni_126 + (-1)Bound*bni_126] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_127] ≥ 0)



    We simplified constraint (174) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (175)    (i187[14] ≥ 0 ⇒ (UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥)∧0 = 0∧[bni_126] = 0∧[(-1)bni_126 + (-1)Bound*bni_126] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_127] ≥ 0)







For Pair COND_LOAD484(TRUE, i5, i7, i187) → LOAD484(i5, i7, -(i187, 1)) the following chains were created:
  • We consider the chain LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14]), COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], -(i187[15], 1)), LOAD484(i5[10], i7[10], 0) → LOAD608(i5[10], i7[10], i7[10]) which results in the following constraint:

    (176)    (i7[14]=i7[15]i5[14]=i5[15]i187[14]=i187[15]>(i187[14], 0)=TRUEi7[15]=i7[10]-(i187[15], 1)=0i5[15]=i5[10]COND_LOAD484(TRUE, i5[15], i7[15], i187[15])≥NonInfC∧COND_LOAD484(TRUE, i5[15], i7[15], i187[15])≥LOAD484(i5[15], i7[15], -(i187[15], 1))∧(UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥))



    We simplified constraint (176) using rules (III), (IV) which results in the following new constraint:

    (177)    (>(i187[14], 0)=TRUE-(i187[14], 1)=0COND_LOAD484(TRUE, i5[14], i7[14], i187[14])≥NonInfC∧COND_LOAD484(TRUE, i5[14], i7[14], i187[14])≥LOAD484(i5[14], i7[14], -(i187[14], 1))∧(UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥))



    We simplified constraint (177) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (178)    (i187[14] + [-1] ≥ 0∧i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧[(-1)bni_128 + (-1)Bound*bni_128] + [bni_128]i5[14] ≥ 0∧[(-1)bso_129] ≥ 0)



    We simplified constraint (178) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (179)    (i187[14] + [-1] ≥ 0∧i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧[(-1)bni_128 + (-1)Bound*bni_128] + [bni_128]i5[14] ≥ 0∧[(-1)bso_129] ≥ 0)



    We simplified constraint (179) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (180)    (i187[14] + [-1] ≥ 0∧i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧[(-1)bni_128 + (-1)Bound*bni_128] + [bni_128]i5[14] ≥ 0∧[(-1)bso_129] ≥ 0)



    We simplified constraint (180) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (181)    (i187[14] + [-1] ≥ 0∧i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧0 = 0∧[bni_128] = 0∧[(-1)bni_128 + (-1)Bound*bni_128] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_129] ≥ 0)



    We simplified constraint (181) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (182)    (i187[14] ≥ 0∧i187[14] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧0 = 0∧[bni_128] = 0∧[(-1)bni_128 + (-1)Bound*bni_128] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_129] ≥ 0)



  • We consider the chain LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14]), COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], -(i187[15], 1)), LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14]) which results in the following constraint:

    (183)    (i7[14]=i7[15]i5[14]=i5[15]i187[14]=i187[15]>(i187[14], 0)=TRUE-(i187[15], 1)=i187[14]1i5[15]=i5[14]1i7[15]=i7[14]1COND_LOAD484(TRUE, i5[15], i7[15], i187[15])≥NonInfC∧COND_LOAD484(TRUE, i5[15], i7[15], i187[15])≥LOAD484(i5[15], i7[15], -(i187[15], 1))∧(UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥))



    We simplified constraint (183) using rules (III), (IV) which results in the following new constraint:

    (184)    (>(i187[14], 0)=TRUECOND_LOAD484(TRUE, i5[14], i7[14], i187[14])≥NonInfC∧COND_LOAD484(TRUE, i5[14], i7[14], i187[14])≥LOAD484(i5[14], i7[14], -(i187[14], 1))∧(UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥))



    We simplified constraint (184) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (185)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧[(-1)bni_128 + (-1)Bound*bni_128] + [bni_128]i5[14] ≥ 0∧[(-1)bso_129] ≥ 0)



    We simplified constraint (185) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (186)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧[(-1)bni_128 + (-1)Bound*bni_128] + [bni_128]i5[14] ≥ 0∧[(-1)bso_129] ≥ 0)



    We simplified constraint (186) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (187)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧[(-1)bni_128 + (-1)Bound*bni_128] + [bni_128]i5[14] ≥ 0∧[(-1)bso_129] ≥ 0)



    We simplified constraint (187) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (188)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧0 = 0∧[bni_128] = 0∧[(-1)bni_128 + (-1)Bound*bni_128] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_129] ≥ 0)



    We simplified constraint (188) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (189)    (i187[14] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧0 = 0∧[bni_128] = 0∧[(-1)bni_128 + (-1)Bound*bni_128] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_129] ≥ 0)







For Pair LOAD258(i5, i7, 0) → LOAD363(i5, i7, i7) the following chains were created:
  • We consider the chain LOAD258(i5[16], i7[16], 0) → LOAD363(i5[16], i7[16], i7[16]), LOAD363(i5[13], i7[13], 0) → LOAD484(i5[13], i7[13], i7[13]) which results in the following constraint:

    (190)    (i7[16]=i7[13]i7[16]=0i5[16]=i5[13]LOAD258(i5[16], i7[16], 0)≥NonInfC∧LOAD258(i5[16], i7[16], 0)≥LOAD363(i5[16], i7[16], i7[16])∧(UIncreasing(LOAD363(i5[16], i7[16], i7[16])), ≥))



    We simplified constraint (190) using rules (III), (IV) which results in the following new constraint:

    (191)    (LOAD258(i5[16], 0, 0)≥NonInfC∧LOAD258(i5[16], 0, 0)≥LOAD363(i5[16], 0, 0)∧(UIncreasing(LOAD363(i5[16], i7[16], i7[16])), ≥))



    We simplified constraint (191) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (192)    ((UIncreasing(LOAD363(i5[16], i7[16], i7[16])), ≥)∧[(-1)bso_131] ≥ 0)



    We simplified constraint (192) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (193)    ((UIncreasing(LOAD363(i5[16], i7[16], i7[16])), ≥)∧[(-1)bso_131] ≥ 0)



    We simplified constraint (193) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (194)    ((UIncreasing(LOAD363(i5[16], i7[16], i7[16])), ≥)∧[(-1)bso_131] ≥ 0)



    We simplified constraint (194) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (195)    ((UIncreasing(LOAD363(i5[16], i7[16], i7[16])), ≥)∧0 = 0∧[(-1)bso_131] ≥ 0)



  • We consider the chain LOAD258(i5[16], i7[16], 0) → LOAD363(i5[16], i7[16], i7[16]), LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17]) which results in the following constraint:

    (196)    (i7[16]=i104[17]i5[16]=i5[17]i7[16]=i7[17]LOAD258(i5[16], i7[16], 0)≥NonInfC∧LOAD258(i5[16], i7[16], 0)≥LOAD363(i5[16], i7[16], i7[16])∧(UIncreasing(LOAD363(i5[16], i7[16], i7[16])), ≥))



    We simplified constraint (196) using rule (IV) which results in the following new constraint:

    (197)    (LOAD258(i5[16], i7[16], 0)≥NonInfC∧LOAD258(i5[16], i7[16], 0)≥LOAD363(i5[16], i7[16], i7[16])∧(UIncreasing(LOAD363(i5[16], i7[16], i7[16])), ≥))



    We simplified constraint (197) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (198)    ((UIncreasing(LOAD363(i5[16], i7[16], i7[16])), ≥)∧[(-1)bso_131] ≥ 0)



    We simplified constraint (198) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (199)    ((UIncreasing(LOAD363(i5[16], i7[16], i7[16])), ≥)∧[(-1)bso_131] ≥ 0)



    We simplified constraint (199) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (200)    ((UIncreasing(LOAD363(i5[16], i7[16], i7[16])), ≥)∧[(-1)bso_131] ≥ 0)



    We simplified constraint (200) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (201)    ((UIncreasing(LOAD363(i5[16], i7[16], i7[16])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_131] ≥ 0)







For Pair LOAD363(i5, i7, i104) → COND_LOAD363(>(i104, 0), i5, i7, i104) the following chains were created:
  • We consider the chain LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17]), COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], -(i104[18], 1)) which results in the following constraint:

    (202)    (i7[17]=i7[18]i5[17]=i5[18]i104[17]=i104[18]>(i104[17], 0)=TRUELOAD363(i5[17], i7[17], i104[17])≥NonInfC∧LOAD363(i5[17], i7[17], i104[17])≥COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])∧(UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥))



    We simplified constraint (202) using rule (IV) which results in the following new constraint:

    (203)    (>(i104[17], 0)=TRUELOAD363(i5[17], i7[17], i104[17])≥NonInfC∧LOAD363(i5[17], i7[17], i104[17])≥COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])∧(UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥))



    We simplified constraint (203) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (204)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥)∧[(-1)bni_132 + (-1)Bound*bni_132] + [bni_132]i5[17] ≥ 0∧[(-1)bso_133] ≥ 0)



    We simplified constraint (204) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (205)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥)∧[(-1)bni_132 + (-1)Bound*bni_132] + [bni_132]i5[17] ≥ 0∧[(-1)bso_133] ≥ 0)



    We simplified constraint (205) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (206)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥)∧[(-1)bni_132 + (-1)Bound*bni_132] + [bni_132]i5[17] ≥ 0∧[(-1)bso_133] ≥ 0)



    We simplified constraint (206) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (207)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥)∧0 = 0∧[bni_132] = 0∧[(-1)bni_132 + (-1)Bound*bni_132] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_133] ≥ 0)



    We simplified constraint (207) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (208)    (i104[17] ≥ 0 ⇒ (UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥)∧0 = 0∧[bni_132] = 0∧[(-1)bni_132 + (-1)Bound*bni_132] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_133] ≥ 0)







For Pair COND_LOAD363(TRUE, i5, i7, i104) → LOAD363(i5, i7, -(i104, 1)) the following chains were created:
  • We consider the chain LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17]), COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], -(i104[18], 1)), LOAD363(i5[13], i7[13], 0) → LOAD484(i5[13], i7[13], i7[13]) which results in the following constraint:

    (209)    (i7[17]=i7[18]i5[17]=i5[18]i104[17]=i104[18]>(i104[17], 0)=TRUEi5[18]=i5[13]-(i104[18], 1)=0i7[18]=i7[13]COND_LOAD363(TRUE, i5[18], i7[18], i104[18])≥NonInfC∧COND_LOAD363(TRUE, i5[18], i7[18], i104[18])≥LOAD363(i5[18], i7[18], -(i104[18], 1))∧(UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥))



    We simplified constraint (209) using rules (III), (IV) which results in the following new constraint:

    (210)    (>(i104[17], 0)=TRUE-(i104[17], 1)=0COND_LOAD363(TRUE, i5[17], i7[17], i104[17])≥NonInfC∧COND_LOAD363(TRUE, i5[17], i7[17], i104[17])≥LOAD363(i5[17], i7[17], -(i104[17], 1))∧(UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥))



    We simplified constraint (210) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (211)    (i104[17] + [-1] ≥ 0∧i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧[(-1)bni_134 + (-1)Bound*bni_134] + [bni_134]i5[17] ≥ 0∧[(-1)bso_135] ≥ 0)



    We simplified constraint (211) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (212)    (i104[17] + [-1] ≥ 0∧i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧[(-1)bni_134 + (-1)Bound*bni_134] + [bni_134]i5[17] ≥ 0∧[(-1)bso_135] ≥ 0)



    We simplified constraint (212) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (213)    (i104[17] + [-1] ≥ 0∧i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧[(-1)bni_134 + (-1)Bound*bni_134] + [bni_134]i5[17] ≥ 0∧[(-1)bso_135] ≥ 0)



    We simplified constraint (213) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (214)    (i104[17] + [-1] ≥ 0∧i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧0 = 0∧[bni_134] = 0∧[(-1)bni_134 + (-1)Bound*bni_134] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_135] ≥ 0)



    We simplified constraint (214) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (215)    (i104[17] ≥ 0∧i104[17] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧0 = 0∧[bni_134] = 0∧[(-1)bni_134 + (-1)Bound*bni_134] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_135] ≥ 0)



  • We consider the chain LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17]), COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], -(i104[18], 1)), LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17]) which results in the following constraint:

    (216)    (i7[17]=i7[18]i5[17]=i5[18]i104[17]=i104[18]>(i104[17], 0)=TRUE-(i104[18], 1)=i104[17]1i5[18]=i5[17]1i7[18]=i7[17]1COND_LOAD363(TRUE, i5[18], i7[18], i104[18])≥NonInfC∧COND_LOAD363(TRUE, i5[18], i7[18], i104[18])≥LOAD363(i5[18], i7[18], -(i104[18], 1))∧(UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥))



    We simplified constraint (216) using rules (III), (IV) which results in the following new constraint:

    (217)    (>(i104[17], 0)=TRUECOND_LOAD363(TRUE, i5[17], i7[17], i104[17])≥NonInfC∧COND_LOAD363(TRUE, i5[17], i7[17], i104[17])≥LOAD363(i5[17], i7[17], -(i104[17], 1))∧(UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥))



    We simplified constraint (217) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (218)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧[(-1)bni_134 + (-1)Bound*bni_134] + [bni_134]i5[17] ≥ 0∧[(-1)bso_135] ≥ 0)



    We simplified constraint (218) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (219)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧[(-1)bni_134 + (-1)Bound*bni_134] + [bni_134]i5[17] ≥ 0∧[(-1)bso_135] ≥ 0)



    We simplified constraint (219) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (220)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧[(-1)bni_134 + (-1)Bound*bni_134] + [bni_134]i5[17] ≥ 0∧[(-1)bso_135] ≥ 0)



    We simplified constraint (220) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (221)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧0 = 0∧[bni_134] = 0∧[(-1)bni_134 + (-1)Bound*bni_134] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_135] ≥ 0)



    We simplified constraint (221) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (222)    (i104[17] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧0 = 0∧[bni_134] = 0∧[(-1)bni_134 + (-1)Bound*bni_134] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_135] ≥ 0)







For Pair LOAD175(i5, i7, 0) → LOAD258(i5, i7, i7) the following chains were created:
  • We consider the chain LOAD175(i5[19], i7[19], 0) → LOAD258(i5[19], i7[19], i7[19]), LOAD258(i5[16], i7[16], 0) → LOAD363(i5[16], i7[16], i7[16]) which results in the following constraint:

    (223)    (i7[19]=0i5[19]=i5[16]i7[19]=i7[16]LOAD175(i5[19], i7[19], 0)≥NonInfC∧LOAD175(i5[19], i7[19], 0)≥LOAD258(i5[19], i7[19], i7[19])∧(UIncreasing(LOAD258(i5[19], i7[19], i7[19])), ≥))



    We simplified constraint (223) using rules (III), (IV) which results in the following new constraint:

    (224)    (LOAD175(i5[19], 0, 0)≥NonInfC∧LOAD175(i5[19], 0, 0)≥LOAD258(i5[19], 0, 0)∧(UIncreasing(LOAD258(i5[19], i7[19], i7[19])), ≥))



    We simplified constraint (224) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (225)    ((UIncreasing(LOAD258(i5[19], i7[19], i7[19])), ≥)∧[(-1)bso_137] ≥ 0)



    We simplified constraint (225) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (226)    ((UIncreasing(LOAD258(i5[19], i7[19], i7[19])), ≥)∧[(-1)bso_137] ≥ 0)



    We simplified constraint (226) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (227)    ((UIncreasing(LOAD258(i5[19], i7[19], i7[19])), ≥)∧[(-1)bso_137] ≥ 0)



    We simplified constraint (227) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (228)    ((UIncreasing(LOAD258(i5[19], i7[19], i7[19])), ≥)∧0 = 0∧[(-1)bso_137] ≥ 0)



  • We consider the chain LOAD175(i5[19], i7[19], 0) → LOAD258(i5[19], i7[19], i7[19]), LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20]) which results in the following constraint:

    (229)    (i7[19]=i49[20]i7[19]=i7[20]i5[19]=i5[20]LOAD175(i5[19], i7[19], 0)≥NonInfC∧LOAD175(i5[19], i7[19], 0)≥LOAD258(i5[19], i7[19], i7[19])∧(UIncreasing(LOAD258(i5[19], i7[19], i7[19])), ≥))



    We simplified constraint (229) using rule (IV) which results in the following new constraint:

    (230)    (LOAD175(i5[19], i7[19], 0)≥NonInfC∧LOAD175(i5[19], i7[19], 0)≥LOAD258(i5[19], i7[19], i7[19])∧(UIncreasing(LOAD258(i5[19], i7[19], i7[19])), ≥))



    We simplified constraint (230) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (231)    ((UIncreasing(LOAD258(i5[19], i7[19], i7[19])), ≥)∧[(-1)bso_137] ≥ 0)



    We simplified constraint (231) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (232)    ((UIncreasing(LOAD258(i5[19], i7[19], i7[19])), ≥)∧[(-1)bso_137] ≥ 0)



    We simplified constraint (232) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (233)    ((UIncreasing(LOAD258(i5[19], i7[19], i7[19])), ≥)∧[(-1)bso_137] ≥ 0)



    We simplified constraint (233) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (234)    ((UIncreasing(LOAD258(i5[19], i7[19], i7[19])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_137] ≥ 0)







For Pair LOAD258(i5, i7, i49) → COND_LOAD258(>(i49, 0), i5, i7, i49) the following chains were created:
  • We consider the chain LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20]), COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], -(i49[21], 1)) which results in the following constraint:

    (235)    (i7[20]=i7[21]>(i49[20], 0)=TRUEi5[20]=i5[21]i49[20]=i49[21]LOAD258(i5[20], i7[20], i49[20])≥NonInfC∧LOAD258(i5[20], i7[20], i49[20])≥COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])∧(UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥))



    We simplified constraint (235) using rule (IV) which results in the following new constraint:

    (236)    (>(i49[20], 0)=TRUELOAD258(i5[20], i7[20], i49[20])≥NonInfC∧LOAD258(i5[20], i7[20], i49[20])≥COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])∧(UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥))



    We simplified constraint (236) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (237)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥)∧[(-1)bni_138 + (-1)Bound*bni_138] + [bni_138]i5[20] ≥ 0∧[(-1)bso_139] ≥ 0)



    We simplified constraint (237) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (238)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥)∧[(-1)bni_138 + (-1)Bound*bni_138] + [bni_138]i5[20] ≥ 0∧[(-1)bso_139] ≥ 0)



    We simplified constraint (238) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (239)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥)∧[(-1)bni_138 + (-1)Bound*bni_138] + [bni_138]i5[20] ≥ 0∧[(-1)bso_139] ≥ 0)



    We simplified constraint (239) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (240)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥)∧0 = 0∧[bni_138] = 0∧[(-1)bni_138 + (-1)Bound*bni_138] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_139] ≥ 0)



    We simplified constraint (240) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (241)    (i49[20] ≥ 0 ⇒ (UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥)∧0 = 0∧[bni_138] = 0∧[(-1)bni_138 + (-1)Bound*bni_138] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_139] ≥ 0)







For Pair COND_LOAD258(TRUE, i5, i7, i49) → LOAD258(i5, i7, -(i49, 1)) the following chains were created:
  • We consider the chain LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20]), COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], -(i49[21], 1)), LOAD258(i5[16], i7[16], 0) → LOAD363(i5[16], i7[16], i7[16]) which results in the following constraint:

    (242)    (i7[20]=i7[21]>(i49[20], 0)=TRUEi5[20]=i5[21]i49[20]=i49[21]i7[21]=i7[16]-(i49[21], 1)=0i5[21]=i5[16]COND_LOAD258(TRUE, i5[21], i7[21], i49[21])≥NonInfC∧COND_LOAD258(TRUE, i5[21], i7[21], i49[21])≥LOAD258(i5[21], i7[21], -(i49[21], 1))∧(UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥))



    We simplified constraint (242) using rules (III), (IV) which results in the following new constraint:

    (243)    (>(i49[20], 0)=TRUE-(i49[20], 1)=0COND_LOAD258(TRUE, i5[20], i7[20], i49[20])≥NonInfC∧COND_LOAD258(TRUE, i5[20], i7[20], i49[20])≥LOAD258(i5[20], i7[20], -(i49[20], 1))∧(UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥))



    We simplified constraint (243) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (244)    (i49[20] + [-1] ≥ 0∧i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧[(-1)bni_140 + (-1)Bound*bni_140] + [bni_140]i5[20] ≥ 0∧[(-1)bso_141] ≥ 0)



    We simplified constraint (244) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (245)    (i49[20] + [-1] ≥ 0∧i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧[(-1)bni_140 + (-1)Bound*bni_140] + [bni_140]i5[20] ≥ 0∧[(-1)bso_141] ≥ 0)



    We simplified constraint (245) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (246)    (i49[20] + [-1] ≥ 0∧i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧[(-1)bni_140 + (-1)Bound*bni_140] + [bni_140]i5[20] ≥ 0∧[(-1)bso_141] ≥ 0)



    We simplified constraint (246) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (247)    (i49[20] + [-1] ≥ 0∧i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧0 = 0∧[bni_140] = 0∧[(-1)bni_140 + (-1)Bound*bni_140] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_141] ≥ 0)



    We simplified constraint (247) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (248)    (i49[20] ≥ 0∧i49[20] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧0 = 0∧[bni_140] = 0∧[(-1)bni_140 + (-1)Bound*bni_140] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_141] ≥ 0)



  • We consider the chain LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20]), COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], -(i49[21], 1)), LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20]) which results in the following constraint:

    (249)    (i7[20]=i7[21]>(i49[20], 0)=TRUEi5[20]=i5[21]i49[20]=i49[21]i7[21]=i7[20]1-(i49[21], 1)=i49[20]1i5[21]=i5[20]1COND_LOAD258(TRUE, i5[21], i7[21], i49[21])≥NonInfC∧COND_LOAD258(TRUE, i5[21], i7[21], i49[21])≥LOAD258(i5[21], i7[21], -(i49[21], 1))∧(UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥))



    We simplified constraint (249) using rules (III), (IV) which results in the following new constraint:

    (250)    (>(i49[20], 0)=TRUECOND_LOAD258(TRUE, i5[20], i7[20], i49[20])≥NonInfC∧COND_LOAD258(TRUE, i5[20], i7[20], i49[20])≥LOAD258(i5[20], i7[20], -(i49[20], 1))∧(UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥))



    We simplified constraint (250) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (251)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧[(-1)bni_140 + (-1)Bound*bni_140] + [bni_140]i5[20] ≥ 0∧[(-1)bso_141] ≥ 0)



    We simplified constraint (251) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (252)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧[(-1)bni_140 + (-1)Bound*bni_140] + [bni_140]i5[20] ≥ 0∧[(-1)bso_141] ≥ 0)



    We simplified constraint (252) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (253)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧[(-1)bni_140 + (-1)Bound*bni_140] + [bni_140]i5[20] ≥ 0∧[(-1)bso_141] ≥ 0)



    We simplified constraint (253) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (254)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧0 = 0∧[bni_140] = 0∧[(-1)bni_140 + (-1)Bound*bni_140] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_141] ≥ 0)



    We simplified constraint (254) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (255)    (i49[20] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧0 = 0∧[bni_140] = 0∧[(-1)bni_140 + (-1)Bound*bni_140] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_141] ≥ 0)







For Pair LOAD83(i5, i7) → COND_LOAD83(&&(>(i7, 0), <(i7, 100)), i5, i7) the following chains were created:
  • We consider the chain LOAD83(i5[22], i7[22]) → COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22]), COND_LOAD83(TRUE, i5[23], i7[23]) → LOAD175(i5[23], i7[23], i7[23]) which results in the following constraint:

    (256)    (i5[22]=i5[23]&&(>(i7[22], 0), <(i7[22], 100))=TRUEi7[22]=i7[23]LOAD83(i5[22], i7[22])≥NonInfC∧LOAD83(i5[22], i7[22])≥COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22])∧(UIncreasing(COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22])), ≥))



    We simplified constraint (256) using rules (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (257)    (>(i7[22], 0)=TRUE<(i7[22], 100)=TRUELOAD83(i5[22], i7[22])≥NonInfC∧LOAD83(i5[22], i7[22])≥COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22])∧(UIncreasing(COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22])), ≥))



    We simplified constraint (257) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (258)    (i7[22] + [-1] ≥ 0∧[99] + [-1]i7[22] ≥ 0 ⇒ (UIncreasing(COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22])), ≥)∧[(-1)bni_142 + (-1)Bound*bni_142] + [bni_142]i5[22] ≥ 0∧[(-1)bso_143] ≥ 0)



    We simplified constraint (258) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (259)    (i7[22] + [-1] ≥ 0∧[99] + [-1]i7[22] ≥ 0 ⇒ (UIncreasing(COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22])), ≥)∧[(-1)bni_142 + (-1)Bound*bni_142] + [bni_142]i5[22] ≥ 0∧[(-1)bso_143] ≥ 0)



    We simplified constraint (259) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (260)    (i7[22] + [-1] ≥ 0∧[99] + [-1]i7[22] ≥ 0 ⇒ (UIncreasing(COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22])), ≥)∧[(-1)bni_142 + (-1)Bound*bni_142] + [bni_142]i5[22] ≥ 0∧[(-1)bso_143] ≥ 0)



    We simplified constraint (260) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (261)    (i7[22] + [-1] ≥ 0∧[99] + [-1]i7[22] ≥ 0 ⇒ (UIncreasing(COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22])), ≥)∧[bni_142] = 0∧[(-1)bni_142 + (-1)Bound*bni_142] ≥ 0∧0 = 0∧[(-1)bso_143] ≥ 0)



    We simplified constraint (261) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (262)    (i7[22] ≥ 0∧[98] + [-1]i7[22] ≥ 0 ⇒ (UIncreasing(COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22])), ≥)∧[bni_142] = 0∧[(-1)bni_142 + (-1)Bound*bni_142] ≥ 0∧0 = 0∧[(-1)bso_143] ≥ 0)







For Pair COND_LOAD83(TRUE, i5, i7) → LOAD175(i5, i7, i7) the following chains were created:
  • We consider the chain COND_LOAD83(TRUE, i5[23], i7[23]) → LOAD175(i5[23], i7[23], i7[23]), LOAD175(i5[19], i7[19], 0) → LOAD258(i5[19], i7[19], i7[19]) which results in the following constraint:

    (263)    (i5[23]=i5[19]i7[23]=i7[19]i7[23]=0COND_LOAD83(TRUE, i5[23], i7[23])≥NonInfC∧COND_LOAD83(TRUE, i5[23], i7[23])≥LOAD175(i5[23], i7[23], i7[23])∧(UIncreasing(LOAD175(i5[23], i7[23], i7[23])), ≥))



    We simplified constraint (263) using rules (III), (IV) which results in the following new constraint:

    (264)    (COND_LOAD83(TRUE, i5[23], 0)≥NonInfC∧COND_LOAD83(TRUE, i5[23], 0)≥LOAD175(i5[23], 0, 0)∧(UIncreasing(LOAD175(i5[23], i7[23], i7[23])), ≥))



    We simplified constraint (264) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (265)    ((UIncreasing(LOAD175(i5[23], i7[23], i7[23])), ≥)∧[(-1)bso_145] ≥ 0)



    We simplified constraint (265) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (266)    ((UIncreasing(LOAD175(i5[23], i7[23], i7[23])), ≥)∧[(-1)bso_145] ≥ 0)



    We simplified constraint (266) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (267)    ((UIncreasing(LOAD175(i5[23], i7[23], i7[23])), ≥)∧[(-1)bso_145] ≥ 0)



    We simplified constraint (267) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (268)    ((UIncreasing(LOAD175(i5[23], i7[23], i7[23])), ≥)∧0 = 0∧[(-1)bso_145] ≥ 0)



  • We consider the chain COND_LOAD83(TRUE, i5[23], i7[23]) → LOAD175(i5[23], i7[23], i7[23]), LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26]) which results in the following constraint:

    (269)    (i7[23]=i7[26]i5[23]=i5[26]i7[23]=i20[26]COND_LOAD83(TRUE, i5[23], i7[23])≥NonInfC∧COND_LOAD83(TRUE, i5[23], i7[23])≥LOAD175(i5[23], i7[23], i7[23])∧(UIncreasing(LOAD175(i5[23], i7[23], i7[23])), ≥))



    We simplified constraint (269) using rule (IV) which results in the following new constraint:

    (270)    (COND_LOAD83(TRUE, i5[23], i7[23])≥NonInfC∧COND_LOAD83(TRUE, i5[23], i7[23])≥LOAD175(i5[23], i7[23], i7[23])∧(UIncreasing(LOAD175(i5[23], i7[23], i7[23])), ≥))



    We simplified constraint (270) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (271)    ((UIncreasing(LOAD175(i5[23], i7[23], i7[23])), ≥)∧[(-1)bso_145] ≥ 0)



    We simplified constraint (271) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (272)    ((UIncreasing(LOAD175(i5[23], i7[23], i7[23])), ≥)∧[(-1)bso_145] ≥ 0)



    We simplified constraint (272) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (273)    ((UIncreasing(LOAD175(i5[23], i7[23], i7[23])), ≥)∧[(-1)bso_145] ≥ 0)



    We simplified constraint (273) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (274)    ((UIncreasing(LOAD175(i5[23], i7[23], i7[23])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_145] ≥ 0)







For Pair LOAD55(i5) → COND_LOAD55(&&(>(i5, 0), <(i5, 100)), i5) the following chains were created:
  • We consider the chain LOAD55(i5[24]) → COND_LOAD55(&&(>(i5[24], 0), <(i5[24], 100)), i5[24]), COND_LOAD55(TRUE, i5[25]) → LOAD175(i5[25], i5[25], i5[25]) which results in the following constraint:

    (275)    (&&(>(i5[24], 0), <(i5[24], 100))=TRUEi5[24]=i5[25]LOAD55(i5[24])≥NonInfC∧LOAD55(i5[24])≥COND_LOAD55(&&(>(i5[24], 0), <(i5[24], 100)), i5[24])∧(UIncreasing(COND_LOAD55(&&(>(i5[24], 0), <(i5[24], 100)), i5[24])), ≥))



    We simplified constraint (275) using rules (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (276)    (>(i5[24], 0)=TRUE<(i5[24], 100)=TRUELOAD55(i5[24])≥NonInfC∧LOAD55(i5[24])≥COND_LOAD55(&&(>(i5[24], 0), <(i5[24], 100)), i5[24])∧(UIncreasing(COND_LOAD55(&&(>(i5[24], 0), <(i5[24], 100)), i5[24])), ≥))



    We simplified constraint (276) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (277)    (i5[24] + [-1] ≥ 0∧[99] + [-1]i5[24] ≥ 0 ⇒ (UIncreasing(COND_LOAD55(&&(>(i5[24], 0), <(i5[24], 100)), i5[24])), ≥)∧[(-1)bni_146 + (-1)Bound*bni_146] + [bni_146]i5[24] ≥ 0∧[(-1)bso_147] ≥ 0)



    We simplified constraint (277) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (278)    (i5[24] + [-1] ≥ 0∧[99] + [-1]i5[24] ≥ 0 ⇒ (UIncreasing(COND_LOAD55(&&(>(i5[24], 0), <(i5[24], 100)), i5[24])), ≥)∧[(-1)bni_146 + (-1)Bound*bni_146] + [bni_146]i5[24] ≥ 0∧[(-1)bso_147] ≥ 0)



    We simplified constraint (278) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (279)    (i5[24] + [-1] ≥ 0∧[99] + [-1]i5[24] ≥ 0 ⇒ (UIncreasing(COND_LOAD55(&&(>(i5[24], 0), <(i5[24], 100)), i5[24])), ≥)∧[(-1)bni_146 + (-1)Bound*bni_146] + [bni_146]i5[24] ≥ 0∧[(-1)bso_147] ≥ 0)



    We simplified constraint (279) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (280)    (i5[24] ≥ 0∧[98] + [-1]i5[24] ≥ 0 ⇒ (UIncreasing(COND_LOAD55(&&(>(i5[24], 0), <(i5[24], 100)), i5[24])), ≥)∧[(-1)Bound*bni_146] + [bni_146]i5[24] ≥ 0∧[(-1)bso_147] ≥ 0)







For Pair COND_LOAD55(TRUE, i5) → LOAD175(i5, i5, i5) the following chains were created:
  • We consider the chain COND_LOAD55(TRUE, i5[25]) → LOAD175(i5[25], i5[25], i5[25]), LOAD175(i5[19], i7[19], 0) → LOAD258(i5[19], i7[19], i7[19]) which results in the following constraint:

    (281)    (i5[25]=i5[19]i5[25]=i7[19]i5[25]=0COND_LOAD55(TRUE, i5[25])≥NonInfC∧COND_LOAD55(TRUE, i5[25])≥LOAD175(i5[25], i5[25], i5[25])∧(UIncreasing(LOAD175(i5[25], i5[25], i5[25])), ≥))



    We simplified constraint (281) using rules (III), (IV) which results in the following new constraint:

    (282)    (COND_LOAD55(TRUE, 0)≥NonInfC∧COND_LOAD55(TRUE, 0)≥LOAD175(0, 0, 0)∧(UIncreasing(LOAD175(i5[25], i5[25], i5[25])), ≥))



    We simplified constraint (282) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (283)    ((UIncreasing(LOAD175(i5[25], i5[25], i5[25])), ≥)∧[(-1)bso_149] ≥ 0)



    We simplified constraint (283) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (284)    ((UIncreasing(LOAD175(i5[25], i5[25], i5[25])), ≥)∧[(-1)bso_149] ≥ 0)



    We simplified constraint (284) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (285)    ((UIncreasing(LOAD175(i5[25], i5[25], i5[25])), ≥)∧[(-1)bso_149] ≥ 0)



  • We consider the chain COND_LOAD55(TRUE, i5[25]) → LOAD175(i5[25], i5[25], i5[25]), LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26]) which results in the following constraint:

    (286)    (i5[25]=i5[26]i5[25]=i7[26]i5[25]=i20[26]COND_LOAD55(TRUE, i5[25])≥NonInfC∧COND_LOAD55(TRUE, i5[25])≥LOAD175(i5[25], i5[25], i5[25])∧(UIncreasing(LOAD175(i5[25], i5[25], i5[25])), ≥))



    We simplified constraint (286) using rule (IV) which results in the following new constraint:

    (287)    (COND_LOAD55(TRUE, i5[25])≥NonInfC∧COND_LOAD55(TRUE, i5[25])≥LOAD175(i5[25], i5[25], i5[25])∧(UIncreasing(LOAD175(i5[25], i5[25], i5[25])), ≥))



    We simplified constraint (287) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (288)    ((UIncreasing(LOAD175(i5[25], i5[25], i5[25])), ≥)∧[(-1)bso_149] ≥ 0)



    We simplified constraint (288) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (289)    ((UIncreasing(LOAD175(i5[25], i5[25], i5[25])), ≥)∧[(-1)bso_149] ≥ 0)



    We simplified constraint (289) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (290)    ((UIncreasing(LOAD175(i5[25], i5[25], i5[25])), ≥)∧[(-1)bso_149] ≥ 0)



    We simplified constraint (290) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (291)    ((UIncreasing(LOAD175(i5[25], i5[25], i5[25])), ≥)∧0 = 0∧[(-1)bso_149] ≥ 0)







For Pair LOAD175(i5, i7, i20) → COND_LOAD175(>(i20, 0), i5, i7, i20) the following chains were created:
  • We consider the chain LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26]), COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], -(i20[27], 1)) which results in the following constraint:

    (292)    (>(i20[26], 0)=TRUEi7[26]=i7[27]i20[26]=i20[27]i5[26]=i5[27]LOAD175(i5[26], i7[26], i20[26])≥NonInfC∧LOAD175(i5[26], i7[26], i20[26])≥COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])∧(UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥))



    We simplified constraint (292) using rule (IV) which results in the following new constraint:

    (293)    (>(i20[26], 0)=TRUELOAD175(i5[26], i7[26], i20[26])≥NonInfC∧LOAD175(i5[26], i7[26], i20[26])≥COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])∧(UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥))



    We simplified constraint (293) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (294)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥)∧[(-1)bni_150 + (-1)Bound*bni_150] + [bni_150]i5[26] ≥ 0∧[(-1)bso_151] ≥ 0)



    We simplified constraint (294) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (295)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥)∧[(-1)bni_150 + (-1)Bound*bni_150] + [bni_150]i5[26] ≥ 0∧[(-1)bso_151] ≥ 0)



    We simplified constraint (295) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (296)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥)∧[(-1)bni_150 + (-1)Bound*bni_150] + [bni_150]i5[26] ≥ 0∧[(-1)bso_151] ≥ 0)



    We simplified constraint (296) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (297)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥)∧0 = 0∧[bni_150] = 0∧[(-1)bni_150 + (-1)Bound*bni_150] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_151] ≥ 0)



    We simplified constraint (297) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (298)    (i20[26] ≥ 0 ⇒ (UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥)∧0 = 0∧[bni_150] = 0∧[(-1)bni_150 + (-1)Bound*bni_150] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_151] ≥ 0)







For Pair COND_LOAD175(TRUE, i5, i7, i20) → LOAD175(i5, i7, -(i20, 1)) the following chains were created:
  • We consider the chain LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26]), COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], -(i20[27], 1)), LOAD175(i5[19], i7[19], 0) → LOAD258(i5[19], i7[19], i7[19]) which results in the following constraint:

    (299)    (>(i20[26], 0)=TRUEi7[26]=i7[27]i20[26]=i20[27]i5[26]=i5[27]i7[27]=i7[19]i5[27]=i5[19]-(i20[27], 1)=0COND_LOAD175(TRUE, i5[27], i7[27], i20[27])≥NonInfC∧COND_LOAD175(TRUE, i5[27], i7[27], i20[27])≥LOAD175(i5[27], i7[27], -(i20[27], 1))∧(UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥))



    We simplified constraint (299) using rules (III), (IV) which results in the following new constraint:

    (300)    (>(i20[26], 0)=TRUE-(i20[26], 1)=0COND_LOAD175(TRUE, i5[26], i7[26], i20[26])≥NonInfC∧COND_LOAD175(TRUE, i5[26], i7[26], i20[26])≥LOAD175(i5[26], i7[26], -(i20[26], 1))∧(UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥))



    We simplified constraint (300) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (301)    (i20[26] + [-1] ≥ 0∧i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧[(-1)bni_152 + (-1)Bound*bni_152] + [bni_152]i5[26] ≥ 0∧[(-1)bso_153] ≥ 0)



    We simplified constraint (301) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (302)    (i20[26] + [-1] ≥ 0∧i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧[(-1)bni_152 + (-1)Bound*bni_152] + [bni_152]i5[26] ≥ 0∧[(-1)bso_153] ≥ 0)



    We simplified constraint (302) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (303)    (i20[26] + [-1] ≥ 0∧i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧[(-1)bni_152 + (-1)Bound*bni_152] + [bni_152]i5[26] ≥ 0∧[(-1)bso_153] ≥ 0)



    We simplified constraint (303) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (304)    (i20[26] + [-1] ≥ 0∧i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧0 = 0∧[bni_152] = 0∧[(-1)bni_152 + (-1)Bound*bni_152] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_153] ≥ 0)



    We simplified constraint (304) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (305)    (i20[26] ≥ 0∧i20[26] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧0 = 0∧[bni_152] = 0∧[(-1)bni_152 + (-1)Bound*bni_152] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_153] ≥ 0)



  • We consider the chain LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26]), COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], -(i20[27], 1)), LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26]) which results in the following constraint:

    (306)    (>(i20[26], 0)=TRUEi7[26]=i7[27]i20[26]=i20[27]i5[26]=i5[27]-(i20[27], 1)=i20[26]1i7[27]=i7[26]1i5[27]=i5[26]1COND_LOAD175(TRUE, i5[27], i7[27], i20[27])≥NonInfC∧COND_LOAD175(TRUE, i5[27], i7[27], i20[27])≥LOAD175(i5[27], i7[27], -(i20[27], 1))∧(UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥))



    We simplified constraint (306) using rules (III), (IV) which results in the following new constraint:

    (307)    (>(i20[26], 0)=TRUECOND_LOAD175(TRUE, i5[26], i7[26], i20[26])≥NonInfC∧COND_LOAD175(TRUE, i5[26], i7[26], i20[26])≥LOAD175(i5[26], i7[26], -(i20[26], 1))∧(UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥))



    We simplified constraint (307) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (308)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧[(-1)bni_152 + (-1)Bound*bni_152] + [bni_152]i5[26] ≥ 0∧[(-1)bso_153] ≥ 0)



    We simplified constraint (308) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (309)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧[(-1)bni_152 + (-1)Bound*bni_152] + [bni_152]i5[26] ≥ 0∧[(-1)bso_153] ≥ 0)



    We simplified constraint (309) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (310)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧[(-1)bni_152 + (-1)Bound*bni_152] + [bni_152]i5[26] ≥ 0∧[(-1)bso_153] ≥ 0)



    We simplified constraint (310) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (311)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧0 = 0∧[bni_152] = 0∧[(-1)bni_152 + (-1)Bound*bni_152] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_153] ≥ 0)



    We simplified constraint (311) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (312)    (i20[26] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧0 = 0∧[bni_152] = 0∧[(-1)bni_152 + (-1)Bound*bni_152] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_153] ≥ 0)







For Pair LOAD83(i5, i7) → COND_LOAD831(&&(>=(i7, 100), >(i5, 0)), i5, i7) the following chains were created:
  • We consider the chain LOAD83(i5[28], i7[28]) → COND_LOAD831(&&(>=(i7[28], 100), >(i5[28], 0)), i5[28], i7[28]), COND_LOAD831(TRUE, i5[29], i7[29]) → LOAD55(-(i5[29], 1)) which results in the following constraint:

    (313)    (&&(>=(i7[28], 100), >(i5[28], 0))=TRUEi5[28]=i5[29]i7[28]=i7[29]LOAD83(i5[28], i7[28])≥NonInfC∧LOAD83(i5[28], i7[28])≥COND_LOAD831(&&(>=(i7[28], 100), >(i5[28], 0)), i5[28], i7[28])∧(UIncreasing(COND_LOAD831(&&(>=(i7[28], 100), >(i5[28], 0)), i5[28], i7[28])), ≥))



    We simplified constraint (313) using rules (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (314)    (>=(i7[28], 100)=TRUE>(i5[28], 0)=TRUELOAD83(i5[28], i7[28])≥NonInfC∧LOAD83(i5[28], i7[28])≥COND_LOAD831(&&(>=(i7[28], 100), >(i5[28], 0)), i5[28], i7[28])∧(UIncreasing(COND_LOAD831(&&(>=(i7[28], 100), >(i5[28], 0)), i5[28], i7[28])), ≥))



    We simplified constraint (314) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (315)    (i7[28] + [-100] ≥ 0∧i5[28] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD831(&&(>=(i7[28], 100), >(i5[28], 0)), i5[28], i7[28])), ≥)∧[(-1)bni_154 + (-1)Bound*bni_154] + [bni_154]i5[28] ≥ 0∧[(-1)bso_155] ≥ 0)



    We simplified constraint (315) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (316)    (i7[28] + [-100] ≥ 0∧i5[28] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD831(&&(>=(i7[28], 100), >(i5[28], 0)), i5[28], i7[28])), ≥)∧[(-1)bni_154 + (-1)Bound*bni_154] + [bni_154]i5[28] ≥ 0∧[(-1)bso_155] ≥ 0)



    We simplified constraint (316) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (317)    (i7[28] + [-100] ≥ 0∧i5[28] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD831(&&(>=(i7[28], 100), >(i5[28], 0)), i5[28], i7[28])), ≥)∧[(-1)bni_154 + (-1)Bound*bni_154] + [bni_154]i5[28] ≥ 0∧[(-1)bso_155] ≥ 0)



    We simplified constraint (317) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (318)    (i7[28] ≥ 0∧i5[28] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD831(&&(>=(i7[28], 100), >(i5[28], 0)), i5[28], i7[28])), ≥)∧[(-1)bni_154 + (-1)Bound*bni_154] + [bni_154]i5[28] ≥ 0∧[(-1)bso_155] ≥ 0)



    We simplified constraint (318) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (319)    (i7[28] ≥ 0∧i5[28] ≥ 0 ⇒ (UIncreasing(COND_LOAD831(&&(>=(i7[28], 100), >(i5[28], 0)), i5[28], i7[28])), ≥)∧[(-1)Bound*bni_154] + [bni_154]i5[28] ≥ 0∧[(-1)bso_155] ≥ 0)







For Pair COND_LOAD831(TRUE, i5, i7) → LOAD55(-(i5, 1)) the following chains were created:
  • We consider the chain LOAD83(i5[28], i7[28]) → COND_LOAD831(&&(>=(i7[28], 100), >(i5[28], 0)), i5[28], i7[28]), COND_LOAD831(TRUE, i5[29], i7[29]) → LOAD55(-(i5[29], 1)), LOAD55(i5[24]) → COND_LOAD55(&&(>(i5[24], 0), <(i5[24], 100)), i5[24]) which results in the following constraint:

    (320)    (&&(>=(i7[28], 100), >(i5[28], 0))=TRUEi5[28]=i5[29]i7[28]=i7[29]-(i5[29], 1)=i5[24]COND_LOAD831(TRUE, i5[29], i7[29])≥NonInfC∧COND_LOAD831(TRUE, i5[29], i7[29])≥LOAD55(-(i5[29], 1))∧(UIncreasing(LOAD55(-(i5[29], 1))), ≥))



    We simplified constraint (320) using rules (III), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (321)    (>=(i7[28], 100)=TRUE>(i5[28], 0)=TRUECOND_LOAD831(TRUE, i5[28], i7[28])≥NonInfC∧COND_LOAD831(TRUE, i5[28], i7[28])≥LOAD55(-(i5[28], 1))∧(UIncreasing(LOAD55(-(i5[29], 1))), ≥))



    We simplified constraint (321) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (322)    (i7[28] + [-100] ≥ 0∧i5[28] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD55(-(i5[29], 1))), ≥)∧[(-1)bni_156 + (-1)Bound*bni_156] + [bni_156]i5[28] ≥ 0∧[1 + (-1)bso_157] ≥ 0)



    We simplified constraint (322) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (323)    (i7[28] + [-100] ≥ 0∧i5[28] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD55(-(i5[29], 1))), ≥)∧[(-1)bni_156 + (-1)Bound*bni_156] + [bni_156]i5[28] ≥ 0∧[1 + (-1)bso_157] ≥ 0)



    We simplified constraint (323) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (324)    (i7[28] + [-100] ≥ 0∧i5[28] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD55(-(i5[29], 1))), ≥)∧[(-1)bni_156 + (-1)Bound*bni_156] + [bni_156]i5[28] ≥ 0∧[1 + (-1)bso_157] ≥ 0)



    We simplified constraint (324) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (325)    (i7[28] ≥ 0∧i5[28] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD55(-(i5[29], 1))), ≥)∧[(-1)bni_156 + (-1)Bound*bni_156] + [bni_156]i5[28] ≥ 0∧[1 + (-1)bso_157] ≥ 0)



    We simplified constraint (325) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (326)    (i7[28] ≥ 0∧i5[28] ≥ 0 ⇒ (UIncreasing(LOAD55(-(i5[29], 1))), ≥)∧[(-1)Bound*bni_156] + [bni_156]i5[28] ≥ 0∧[1 + (-1)bso_157] ≥ 0)



  • We consider the chain LOAD83(i5[28], i7[28]) → COND_LOAD831(&&(>=(i7[28], 100), >(i5[28], 0)), i5[28], i7[28]), COND_LOAD831(TRUE, i5[29], i7[29]) → LOAD55(-(i5[29], 1)), LOAD55(i5[30]) → COND_LOAD551(>=(i5[30], 100), i5[30]) which results in the following constraint:

    (327)    (&&(>=(i7[28], 100), >(i5[28], 0))=TRUEi5[28]=i5[29]i7[28]=i7[29]-(i5[29], 1)=i5[30]COND_LOAD831(TRUE, i5[29], i7[29])≥NonInfC∧COND_LOAD831(TRUE, i5[29], i7[29])≥LOAD55(-(i5[29], 1))∧(UIncreasing(LOAD55(-(i5[29], 1))), ≥))



    We simplified constraint (327) using rules (III), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (328)    (>=(i7[28], 100)=TRUE>(i5[28], 0)=TRUECOND_LOAD831(TRUE, i5[28], i7[28])≥NonInfC∧COND_LOAD831(TRUE, i5[28], i7[28])≥LOAD55(-(i5[28], 1))∧(UIncreasing(LOAD55(-(i5[29], 1))), ≥))



    We simplified constraint (328) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (329)    (i7[28] + [-100] ≥ 0∧i5[28] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD55(-(i5[29], 1))), ≥)∧[(-1)bni_156 + (-1)Bound*bni_156] + [bni_156]i5[28] ≥ 0∧[1 + (-1)bso_157] ≥ 0)



    We simplified constraint (329) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (330)    (i7[28] + [-100] ≥ 0∧i5[28] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD55(-(i5[29], 1))), ≥)∧[(-1)bni_156 + (-1)Bound*bni_156] + [bni_156]i5[28] ≥ 0∧[1 + (-1)bso_157] ≥ 0)



    We simplified constraint (330) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (331)    (i7[28] + [-100] ≥ 0∧i5[28] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD55(-(i5[29], 1))), ≥)∧[(-1)bni_156 + (-1)Bound*bni_156] + [bni_156]i5[28] ≥ 0∧[1 + (-1)bso_157] ≥ 0)



    We simplified constraint (331) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (332)    (i7[28] ≥ 0∧i5[28] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD55(-(i5[29], 1))), ≥)∧[(-1)bni_156 + (-1)Bound*bni_156] + [bni_156]i5[28] ≥ 0∧[1 + (-1)bso_157] ≥ 0)



    We simplified constraint (332) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (333)    (i7[28] ≥ 0∧i5[28] ≥ 0 ⇒ (UIncreasing(LOAD55(-(i5[29], 1))), ≥)∧[(-1)Bound*bni_156] + [bni_156]i5[28] ≥ 0∧[1 + (-1)bso_157] ≥ 0)







For Pair LOAD55(i5) → COND_LOAD551(>=(i5, 100), i5) the following chains were created:
  • We consider the chain LOAD55(i5[30]) → COND_LOAD551(>=(i5[30], 100), i5[30]), COND_LOAD551(TRUE, i5[31]) → LOAD55(-(i5[31], 1)) which results in the following constraint:

    (334)    (i5[30]=i5[31]>=(i5[30], 100)=TRUELOAD55(i5[30])≥NonInfC∧LOAD55(i5[30])≥COND_LOAD551(>=(i5[30], 100), i5[30])∧(UIncreasing(COND_LOAD551(>=(i5[30], 100), i5[30])), ≥))



    We simplified constraint (334) using rule (IV) which results in the following new constraint:

    (335)    (>=(i5[30], 100)=TRUELOAD55(i5[30])≥NonInfC∧LOAD55(i5[30])≥COND_LOAD551(>=(i5[30], 100), i5[30])∧(UIncreasing(COND_LOAD551(>=(i5[30], 100), i5[30])), ≥))



    We simplified constraint (335) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (336)    (i5[30] + [-100] ≥ 0 ⇒ (UIncreasing(COND_LOAD551(>=(i5[30], 100), i5[30])), ≥)∧[(-1)bni_158 + (-1)Bound*bni_158] + [bni_158]i5[30] ≥ 0∧[(-1)bso_159] ≥ 0)



    We simplified constraint (336) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (337)    (i5[30] + [-100] ≥ 0 ⇒ (UIncreasing(COND_LOAD551(>=(i5[30], 100), i5[30])), ≥)∧[(-1)bni_158 + (-1)Bound*bni_158] + [bni_158]i5[30] ≥ 0∧[(-1)bso_159] ≥ 0)



    We simplified constraint (337) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (338)    (i5[30] + [-100] ≥ 0 ⇒ (UIncreasing(COND_LOAD551(>=(i5[30], 100), i5[30])), ≥)∧[(-1)bni_158 + (-1)Bound*bni_158] + [bni_158]i5[30] ≥ 0∧[(-1)bso_159] ≥ 0)



    We simplified constraint (338) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (339)    (i5[30] ≥ 0 ⇒ (UIncreasing(COND_LOAD551(>=(i5[30], 100), i5[30])), ≥)∧[(99)bni_158 + (-1)Bound*bni_158] + [bni_158]i5[30] ≥ 0∧[(-1)bso_159] ≥ 0)







For Pair COND_LOAD551(TRUE, i5) → LOAD55(-(i5, 1)) the following chains were created:
  • We consider the chain LOAD55(i5[30]) → COND_LOAD551(>=(i5[30], 100), i5[30]), COND_LOAD551(TRUE, i5[31]) → LOAD55(-(i5[31], 1)), LOAD55(i5[24]) → COND_LOAD55(&&(>(i5[24], 0), <(i5[24], 100)), i5[24]) which results in the following constraint:

    (340)    (i5[30]=i5[31]>=(i5[30], 100)=TRUE-(i5[31], 1)=i5[24]COND_LOAD551(TRUE, i5[31])≥NonInfC∧COND_LOAD551(TRUE, i5[31])≥LOAD55(-(i5[31], 1))∧(UIncreasing(LOAD55(-(i5[31], 1))), ≥))



    We simplified constraint (340) using rules (III), (IV) which results in the following new constraint:

    (341)    (>=(i5[30], 100)=TRUECOND_LOAD551(TRUE, i5[30])≥NonInfC∧COND_LOAD551(TRUE, i5[30])≥LOAD55(-(i5[30], 1))∧(UIncreasing(LOAD55(-(i5[31], 1))), ≥))



    We simplified constraint (341) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (342)    (i5[30] + [-100] ≥ 0 ⇒ (UIncreasing(LOAD55(-(i5[31], 1))), ≥)∧[(-1)bni_160 + (-1)Bound*bni_160] + [bni_160]i5[30] ≥ 0∧[1 + (-1)bso_161] ≥ 0)



    We simplified constraint (342) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (343)    (i5[30] + [-100] ≥ 0 ⇒ (UIncreasing(LOAD55(-(i5[31], 1))), ≥)∧[(-1)bni_160 + (-1)Bound*bni_160] + [bni_160]i5[30] ≥ 0∧[1 + (-1)bso_161] ≥ 0)



    We simplified constraint (343) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (344)    (i5[30] + [-100] ≥ 0 ⇒ (UIncreasing(LOAD55(-(i5[31], 1))), ≥)∧[(-1)bni_160 + (-1)Bound*bni_160] + [bni_160]i5[30] ≥ 0∧[1 + (-1)bso_161] ≥ 0)



    We simplified constraint (344) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (345)    (i5[30] ≥ 0 ⇒ (UIncreasing(LOAD55(-(i5[31], 1))), ≥)∧[(99)bni_160 + (-1)Bound*bni_160] + [bni_160]i5[30] ≥ 0∧[1 + (-1)bso_161] ≥ 0)



  • We consider the chain LOAD55(i5[30]) → COND_LOAD551(>=(i5[30], 100), i5[30]), COND_LOAD551(TRUE, i5[31]) → LOAD55(-(i5[31], 1)), LOAD55(i5[30]) → COND_LOAD551(>=(i5[30], 100), i5[30]) which results in the following constraint:

    (346)    (i5[30]=i5[31]>=(i5[30], 100)=TRUE-(i5[31], 1)=i5[30]1COND_LOAD551(TRUE, i5[31])≥NonInfC∧COND_LOAD551(TRUE, i5[31])≥LOAD55(-(i5[31], 1))∧(UIncreasing(LOAD55(-(i5[31], 1))), ≥))



    We simplified constraint (346) using rules (III), (IV) which results in the following new constraint:

    (347)    (>=(i5[30], 100)=TRUECOND_LOAD551(TRUE, i5[30])≥NonInfC∧COND_LOAD551(TRUE, i5[30])≥LOAD55(-(i5[30], 1))∧(UIncreasing(LOAD55(-(i5[31], 1))), ≥))



    We simplified constraint (347) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (348)    (i5[30] + [-100] ≥ 0 ⇒ (UIncreasing(LOAD55(-(i5[31], 1))), ≥)∧[(-1)bni_160 + (-1)Bound*bni_160] + [bni_160]i5[30] ≥ 0∧[1 + (-1)bso_161] ≥ 0)



    We simplified constraint (348) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (349)    (i5[30] + [-100] ≥ 0 ⇒ (UIncreasing(LOAD55(-(i5[31], 1))), ≥)∧[(-1)bni_160 + (-1)Bound*bni_160] + [bni_160]i5[30] ≥ 0∧[1 + (-1)bso_161] ≥ 0)



    We simplified constraint (349) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (350)    (i5[30] + [-100] ≥ 0 ⇒ (UIncreasing(LOAD55(-(i5[31], 1))), ≥)∧[(-1)bni_160 + (-1)Bound*bni_160] + [bni_160]i5[30] ≥ 0∧[1 + (-1)bso_161] ≥ 0)



    We simplified constraint (350) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (351)    (i5[30] ≥ 0 ⇒ (UIncreasing(LOAD55(-(i5[31], 1))), ≥)∧[(99)bni_160 + (-1)Bound*bni_160] + [bni_160]i5[30] ≥ 0∧[1 + (-1)bso_161] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • LOAD1100(i5, i7, 0) → LOAD83(i5, +(i7, 1))
    • ((UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥)∧0 = 0∧[(-1)bso_99] ≥ 0)
    • (i696[3] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥)∧0 = 0∧0 = 0∧0 ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_99] ≥ 0)
    • ((UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥)∧0 = 0∧[(-1)bso_99] ≥ 0)
    • (i696[3] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥)∧0 = 0∧0 = 0∧0 ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_99] ≥ 0)

  • LOAD949(i5, i7, 0) → LOAD1100(i5, i7, i7)
    • ((UIncreasing(LOAD1100(i5[1], i7[1], i7[1])), ≥)∧0 = 0∧[(-1)bso_101] ≥ 0)
    • ((UIncreasing(LOAD1100(i5[1], i7[1], i7[1])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_101] ≥ 0)

  • LOAD1100(i5, i7, i696) → COND_LOAD1100(>(i696, 0), i5, i7, i696)
    • (i696[2] ≥ 0 ⇒ (UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥)∧0 = 0∧[bni_102] = 0∧[(-1)bni_102 + (-1)Bound*bni_102] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_103] ≥ 0)

  • COND_LOAD1100(TRUE, i5, i7, i696) → LOAD1100(i5, i7, -(i696, 1))
    • (i696[2] ≥ 0∧i696[2] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧0 = 0∧[bni_104] = 0∧[(-1)bni_104 + (-1)Bound*bni_104] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_105] ≥ 0)
    • (i696[2] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧0 = 0∧[bni_104] = 0∧[(-1)bni_104 + (-1)Bound*bni_104] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_105] ≥ 0)

  • LOAD768(i5, i7, 0) → LOAD949(i5, i7, i7)
    • ((UIncreasing(LOAD949(i5[4], i7[4], i7[4])), ≥)∧0 = 0∧[(-1)bso_107] ≥ 0)
    • ((UIncreasing(LOAD949(i5[4], i7[4], i7[4])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_107] ≥ 0)

  • LOAD949(i5, i7, i605) → COND_LOAD949(>(i605, 0), i5, i7, i605)
    • (i605[5] ≥ 0 ⇒ (UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥)∧0 = 0∧[bni_108] = 0∧[(-1)bni_108 + (-1)Bound*bni_108] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_109] ≥ 0)

  • COND_LOAD949(TRUE, i5, i7, i605) → LOAD949(i5, i7, -(i605, 1))
    • (i605[5] ≥ 0∧i605[5] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧0 = 0∧[bni_110] = 0∧[(-1)bni_110 + (-1)Bound*bni_110] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_111] ≥ 0)
    • (i605[5] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧0 = 0∧[bni_110] = 0∧[(-1)bni_110 + (-1)Bound*bni_110] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_111] ≥ 0)

  • LOAD608(i5, i7, 0) → LOAD768(i5, i7, i7)
    • ((UIncreasing(LOAD768(i5[7], i7[7], i7[7])), ≥)∧0 = 0∧[(-1)bso_113] ≥ 0)
    • ((UIncreasing(LOAD768(i5[7], i7[7], i7[7])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_113] ≥ 0)

  • LOAD768(i5, i7, i436) → COND_LOAD768(>(i436, 0), i5, i7, i436)
    • (i436[8] ≥ 0 ⇒ (UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥)∧0 = 0∧[bni_114] = 0∧[(-1)bni_114 + (-1)Bound*bni_114] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_115] ≥ 0)

  • COND_LOAD768(TRUE, i5, i7, i436) → LOAD768(i5, i7, -(i436, 1))
    • (i436[8] ≥ 0∧i436[8] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧0 = 0∧[bni_116] = 0∧[(-1)bni_116 + (-1)Bound*bni_116] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_117] ≥ 0)
    • (i436[8] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧0 = 0∧[bni_116] = 0∧[(-1)bni_116 + (-1)Bound*bni_116] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_117] ≥ 0)

  • LOAD484(i5, i7, 0) → LOAD608(i5, i7, i7)
    • ((UIncreasing(LOAD608(i5[10], i7[10], i7[10])), ≥)∧0 = 0∧[(-1)bso_119] ≥ 0)
    • ((UIncreasing(LOAD608(i5[10], i7[10], i7[10])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_119] ≥ 0)

  • LOAD608(i5, i7, i296) → COND_LOAD608(>(i296, 0), i5, i7, i296)
    • (i296[11] ≥ 0 ⇒ (UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥)∧0 = 0∧[bni_120] = 0∧[(-1)bni_120 + (-1)Bound*bni_120] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_121] ≥ 0)

  • COND_LOAD608(TRUE, i5, i7, i296) → LOAD608(i5, i7, -(i296, 1))
    • (i296[11] ≥ 0∧i296[11] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧0 = 0∧[bni_122] = 0∧[(-1)bni_122 + (-1)Bound*bni_122] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_123] ≥ 0)
    • (i296[11] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧0 = 0∧[bni_122] = 0∧[(-1)bni_122 + (-1)Bound*bni_122] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_123] ≥ 0)

  • LOAD363(i5, i7, 0) → LOAD484(i5, i7, i7)
    • ((UIncreasing(LOAD484(i5[13], i7[13], i7[13])), ≥)∧0 = 0∧[(-1)bso_125] ≥ 0)
    • ((UIncreasing(LOAD484(i5[13], i7[13], i7[13])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_125] ≥ 0)

  • LOAD484(i5, i7, i187) → COND_LOAD484(>(i187, 0), i5, i7, i187)
    • (i187[14] ≥ 0 ⇒ (UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥)∧0 = 0∧[bni_126] = 0∧[(-1)bni_126 + (-1)Bound*bni_126] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_127] ≥ 0)

  • COND_LOAD484(TRUE, i5, i7, i187) → LOAD484(i5, i7, -(i187, 1))
    • (i187[14] ≥ 0∧i187[14] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧0 = 0∧[bni_128] = 0∧[(-1)bni_128 + (-1)Bound*bni_128] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_129] ≥ 0)
    • (i187[14] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧0 = 0∧[bni_128] = 0∧[(-1)bni_128 + (-1)Bound*bni_128] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_129] ≥ 0)

  • LOAD258(i5, i7, 0) → LOAD363(i5, i7, i7)
    • ((UIncreasing(LOAD363(i5[16], i7[16], i7[16])), ≥)∧0 = 0∧[(-1)bso_131] ≥ 0)
    • ((UIncreasing(LOAD363(i5[16], i7[16], i7[16])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_131] ≥ 0)

  • LOAD363(i5, i7, i104) → COND_LOAD363(>(i104, 0), i5, i7, i104)
    • (i104[17] ≥ 0 ⇒ (UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥)∧0 = 0∧[bni_132] = 0∧[(-1)bni_132 + (-1)Bound*bni_132] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_133] ≥ 0)

  • COND_LOAD363(TRUE, i5, i7, i104) → LOAD363(i5, i7, -(i104, 1))
    • (i104[17] ≥ 0∧i104[17] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧0 = 0∧[bni_134] = 0∧[(-1)bni_134 + (-1)Bound*bni_134] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_135] ≥ 0)
    • (i104[17] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧0 = 0∧[bni_134] = 0∧[(-1)bni_134 + (-1)Bound*bni_134] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_135] ≥ 0)

  • LOAD175(i5, i7, 0) → LOAD258(i5, i7, i7)
    • ((UIncreasing(LOAD258(i5[19], i7[19], i7[19])), ≥)∧0 = 0∧[(-1)bso_137] ≥ 0)
    • ((UIncreasing(LOAD258(i5[19], i7[19], i7[19])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_137] ≥ 0)

  • LOAD258(i5, i7, i49) → COND_LOAD258(>(i49, 0), i5, i7, i49)
    • (i49[20] ≥ 0 ⇒ (UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥)∧0 = 0∧[bni_138] = 0∧[(-1)bni_138 + (-1)Bound*bni_138] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_139] ≥ 0)

  • COND_LOAD258(TRUE, i5, i7, i49) → LOAD258(i5, i7, -(i49, 1))
    • (i49[20] ≥ 0∧i49[20] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧0 = 0∧[bni_140] = 0∧[(-1)bni_140 + (-1)Bound*bni_140] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_141] ≥ 0)
    • (i49[20] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧0 = 0∧[bni_140] = 0∧[(-1)bni_140 + (-1)Bound*bni_140] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_141] ≥ 0)

  • LOAD83(i5, i7) → COND_LOAD83(&&(>(i7, 0), <(i7, 100)), i5, i7)
    • (i7[22] ≥ 0∧[98] + [-1]i7[22] ≥ 0 ⇒ (UIncreasing(COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22])), ≥)∧[bni_142] = 0∧[(-1)bni_142 + (-1)Bound*bni_142] ≥ 0∧0 = 0∧[(-1)bso_143] ≥ 0)

  • COND_LOAD83(TRUE, i5, i7) → LOAD175(i5, i7, i7)
    • ((UIncreasing(LOAD175(i5[23], i7[23], i7[23])), ≥)∧0 = 0∧[(-1)bso_145] ≥ 0)
    • ((UIncreasing(LOAD175(i5[23], i7[23], i7[23])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_145] ≥ 0)

  • LOAD55(i5) → COND_LOAD55(&&(>(i5, 0), <(i5, 100)), i5)
    • (i5[24] ≥ 0∧[98] + [-1]i5[24] ≥ 0 ⇒ (UIncreasing(COND_LOAD55(&&(>(i5[24], 0), <(i5[24], 100)), i5[24])), ≥)∧[(-1)Bound*bni_146] + [bni_146]i5[24] ≥ 0∧[(-1)bso_147] ≥ 0)

  • COND_LOAD55(TRUE, i5) → LOAD175(i5, i5, i5)
    • ((UIncreasing(LOAD175(i5[25], i5[25], i5[25])), ≥)∧[(-1)bso_149] ≥ 0)
    • ((UIncreasing(LOAD175(i5[25], i5[25], i5[25])), ≥)∧0 = 0∧[(-1)bso_149] ≥ 0)

  • LOAD175(i5, i7, i20) → COND_LOAD175(>(i20, 0), i5, i7, i20)
    • (i20[26] ≥ 0 ⇒ (UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥)∧0 = 0∧[bni_150] = 0∧[(-1)bni_150 + (-1)Bound*bni_150] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_151] ≥ 0)

  • COND_LOAD175(TRUE, i5, i7, i20) → LOAD175(i5, i7, -(i20, 1))
    • (i20[26] ≥ 0∧i20[26] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧0 = 0∧[bni_152] = 0∧[(-1)bni_152 + (-1)Bound*bni_152] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_153] ≥ 0)
    • (i20[26] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧0 = 0∧[bni_152] = 0∧[(-1)bni_152 + (-1)Bound*bni_152] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_153] ≥ 0)

  • LOAD83(i5, i7) → COND_LOAD831(&&(>=(i7, 100), >(i5, 0)), i5, i7)
    • (i7[28] ≥ 0∧i5[28] ≥ 0 ⇒ (UIncreasing(COND_LOAD831(&&(>=(i7[28], 100), >(i5[28], 0)), i5[28], i7[28])), ≥)∧[(-1)Bound*bni_154] + [bni_154]i5[28] ≥ 0∧[(-1)bso_155] ≥ 0)

  • COND_LOAD831(TRUE, i5, i7) → LOAD55(-(i5, 1))
    • (i7[28] ≥ 0∧i5[28] ≥ 0 ⇒ (UIncreasing(LOAD55(-(i5[29], 1))), ≥)∧[(-1)Bound*bni_156] + [bni_156]i5[28] ≥ 0∧[1 + (-1)bso_157] ≥ 0)
    • (i7[28] ≥ 0∧i5[28] ≥ 0 ⇒ (UIncreasing(LOAD55(-(i5[29], 1))), ≥)∧[(-1)Bound*bni_156] + [bni_156]i5[28] ≥ 0∧[1 + (-1)bso_157] ≥ 0)

  • LOAD55(i5) → COND_LOAD551(>=(i5, 100), i5)
    • (i5[30] ≥ 0 ⇒ (UIncreasing(COND_LOAD551(>=(i5[30], 100), i5[30])), ≥)∧[(99)bni_158 + (-1)Bound*bni_158] + [bni_158]i5[30] ≥ 0∧[(-1)bso_159] ≥ 0)

  • COND_LOAD551(TRUE, i5) → LOAD55(-(i5, 1))
    • (i5[30] ≥ 0 ⇒ (UIncreasing(LOAD55(-(i5[31], 1))), ≥)∧[(99)bni_160 + (-1)Bound*bni_160] + [bni_160]i5[30] ≥ 0∧[1 + (-1)bso_161] ≥ 0)
    • (i5[30] ≥ 0 ⇒ (UIncreasing(LOAD55(-(i5[31], 1))), ≥)∧[(99)bni_160 + (-1)Bound*bni_160] + [bni_160]i5[30] ≥ 0∧[1 + (-1)bso_161] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(LOAD1100(x1, x2, x3)) = [-1] + x1   
POL(0) = 0   
POL(LOAD83(x1, x2)) = [-1] + x1   
POL(+(x1, x2)) = x1 + x2   
POL(1) = [1]   
POL(LOAD949(x1, x2, x3)) = [-1] + x1   
POL(COND_LOAD1100(x1, x2, x3, x4)) = [-1] + x2   
POL(>(x1, x2)) = [-1]   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(LOAD768(x1, x2, x3)) = [-1] + x1   
POL(COND_LOAD949(x1, x2, x3, x4)) = [-1] + x2   
POL(LOAD608(x1, x2, x3)) = [-1] + x1   
POL(COND_LOAD768(x1, x2, x3, x4)) = [-1] + x2   
POL(LOAD484(x1, x2, x3)) = [-1] + x1   
POL(COND_LOAD608(x1, x2, x3, x4)) = [-1] + x2   
POL(LOAD363(x1, x2, x3)) = [-1] + x1   
POL(COND_LOAD484(x1, x2, x3, x4)) = [-1] + x2   
POL(LOAD258(x1, x2, x3)) = [-1] + x1   
POL(COND_LOAD363(x1, x2, x3, x4)) = [-1] + x2   
POL(LOAD175(x1, x2, x3)) = [-1] + x1   
POL(COND_LOAD258(x1, x2, x3, x4)) = [-1] + x2   
POL(COND_LOAD83(x1, x2, x3)) = [-1] + x2   
POL(&&(x1, x2)) = [-1]   
POL(<(x1, x2)) = [-1]   
POL(100) = [100]   
POL(LOAD55(x1)) = [-1] + x1   
POL(COND_LOAD55(x1, x2)) = [-1] + x2   
POL(COND_LOAD175(x1, x2, x3, x4)) = [-1] + x2   
POL(COND_LOAD831(x1, x2, x3)) = [-1] + x2   
POL(>=(x1, x2)) = [-1]   
POL(COND_LOAD551(x1, x2)) = [-1] + x2   

The following pairs are in P>:

COND_LOAD831(TRUE, i5[29], i7[29]) → LOAD55(-(i5[29], 1))
COND_LOAD551(TRUE, i5[31]) → LOAD55(-(i5[31], 1))

The following pairs are in Pbound:

LOAD55(i5[24]) → COND_LOAD55(&&(>(i5[24], 0), <(i5[24], 100)), i5[24])
LOAD83(i5[28], i7[28]) → COND_LOAD831(&&(>=(i7[28], 100), >(i5[28], 0)), i5[28], i7[28])
COND_LOAD831(TRUE, i5[29], i7[29]) → LOAD55(-(i5[29], 1))
LOAD55(i5[30]) → COND_LOAD551(>=(i5[30], 100), i5[30])
COND_LOAD551(TRUE, i5[31]) → LOAD55(-(i5[31], 1))

The following pairs are in P:

LOAD1100(i5[0], i7[0], 0) → LOAD83(i5[0], +(i7[0], 1))
LOAD949(i5[1], i7[1], 0) → LOAD1100(i5[1], i7[1], i7[1])
LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])
COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], -(i696[3], 1))
LOAD768(i5[4], i7[4], 0) → LOAD949(i5[4], i7[4], i7[4])
LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])
COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], -(i605[6], 1))
LOAD608(i5[7], i7[7], 0) → LOAD768(i5[7], i7[7], i7[7])
LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])
COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], -(i436[9], 1))
LOAD484(i5[10], i7[10], 0) → LOAD608(i5[10], i7[10], i7[10])
LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])
COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], -(i296[12], 1))
LOAD363(i5[13], i7[13], 0) → LOAD484(i5[13], i7[13], i7[13])
LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])
COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], -(i187[15], 1))
LOAD258(i5[16], i7[16], 0) → LOAD363(i5[16], i7[16], i7[16])
LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])
COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], -(i104[18], 1))
LOAD175(i5[19], i7[19], 0) → LOAD258(i5[19], i7[19], i7[19])
LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])
COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], -(i49[21], 1))
LOAD83(i5[22], i7[22]) → COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22])
COND_LOAD83(TRUE, i5[23], i7[23]) → LOAD175(i5[23], i7[23], i7[23])
LOAD55(i5[24]) → COND_LOAD55(&&(>(i5[24], 0), <(i5[24], 100)), i5[24])
COND_LOAD55(TRUE, i5[25]) → LOAD175(i5[25], i5[25], i5[25])
LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])
COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], -(i20[27], 1))
LOAD83(i5[28], i7[28]) → COND_LOAD831(&&(>=(i7[28], 100), >(i5[28], 0)), i5[28], i7[28])
LOAD55(i5[30]) → COND_LOAD551(>=(i5[30], 100), i5[30])

At least the following rules have been oriented under context sensitive arithmetic replacement:

TRUE1&&(TRUE, TRUE)1
FALSE1&&(TRUE, FALSE)1
FALSE1&&(FALSE, TRUE)1
FALSE1&&(FALSE, FALSE)1

(12) Complex Obligation (AND)

(13) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


R is empty.

The integer pair graph contains the following rules and edges:
(0): LOAD1100(i5[0], i7[0], 0) → LOAD83(i5[0], i7[0] + 1)
(1): LOAD949(i5[1], i7[1], 0) → LOAD1100(i5[1], i7[1], i7[1])
(2): LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(i696[2] > 0, i5[2], i7[2], i696[2])
(3): COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], i696[3] - 1)
(4): LOAD768(i5[4], i7[4], 0) → LOAD949(i5[4], i7[4], i7[4])
(5): LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(i605[5] > 0, i5[5], i7[5], i605[5])
(6): COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], i605[6] - 1)
(7): LOAD608(i5[7], i7[7], 0) → LOAD768(i5[7], i7[7], i7[7])
(8): LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(i436[8] > 0, i5[8], i7[8], i436[8])
(9): COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], i436[9] - 1)
(10): LOAD484(i5[10], i7[10], 0) → LOAD608(i5[10], i7[10], i7[10])
(11): LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(i296[11] > 0, i5[11], i7[11], i296[11])
(12): COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], i296[12] - 1)
(13): LOAD363(i5[13], i7[13], 0) → LOAD484(i5[13], i7[13], i7[13])
(14): LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(i187[14] > 0, i5[14], i7[14], i187[14])
(15): COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], i187[15] - 1)
(16): LOAD258(i5[16], i7[16], 0) → LOAD363(i5[16], i7[16], i7[16])
(17): LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(i104[17] > 0, i5[17], i7[17], i104[17])
(18): COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], i104[18] - 1)
(19): LOAD175(i5[19], i7[19], 0) → LOAD258(i5[19], i7[19], i7[19])
(20): LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(i49[20] > 0, i5[20], i7[20], i49[20])
(21): COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], i49[21] - 1)
(22): LOAD83(i5[22], i7[22]) → COND_LOAD83(i7[22] > 0 && i7[22] < 100, i5[22], i7[22])
(23): COND_LOAD83(TRUE, i5[23], i7[23]) → LOAD175(i5[23], i7[23], i7[23])
(24): LOAD55(i5[24]) → COND_LOAD55(i5[24] > 0 && i5[24] < 100, i5[24])
(25): COND_LOAD55(TRUE, i5[25]) → LOAD175(i5[25], i5[25], i5[25])
(26): LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(i20[26] > 0, i5[26], i7[26], i20[26])
(27): COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], i20[27] - 1)
(28): LOAD83(i5[28], i7[28]) → COND_LOAD831(i7[28] >= 100 && i5[28] > 0, i5[28], i7[28])
(30): LOAD55(i5[30]) → COND_LOAD551(i5[30] >= 100, i5[30])

(1) -> (0), if ((i7[1]* 0)∧(i5[1]* i5[0])∧(i7[1]* i7[0]))


(3) -> (0), if ((i7[3]* i7[0])∧(i5[3]* i5[0])∧(i696[3] - 1* 0))


(4) -> (1), if ((i5[4]* i5[1])∧(i7[4]* 0)∧(i7[4]* i7[1]))


(6) -> (1), if ((i605[6] - 1* 0)∧(i5[6]* i5[1])∧(i7[6]* i7[1]))


(1) -> (2), if ((i5[1]* i5[2])∧(i7[1]* i7[2])∧(i7[1]* i696[2]))


(3) -> (2), if ((i7[3]* i7[2])∧(i696[3] - 1* i696[2])∧(i5[3]* i5[2]))


(2) -> (3), if ((i5[2]* i5[3])∧(i7[2]* i7[3])∧(i696[2]* i696[3])∧(i696[2] > 0* TRUE))


(7) -> (4), if ((i7[7]* 0)∧(i7[7]* i7[4])∧(i5[7]* i5[4]))


(9) -> (4), if ((i7[9]* i7[4])∧(i436[9] - 1* 0)∧(i5[9]* i5[4]))


(4) -> (5), if ((i7[4]* i7[5])∧(i7[4]* i605[5])∧(i5[4]* i5[5]))


(6) -> (5), if ((i7[6]* i7[5])∧(i605[6] - 1* i605[5])∧(i5[6]* i5[5]))


(5) -> (6), if ((i5[5]* i5[6])∧(i7[5]* i7[6])∧(i605[5]* i605[6])∧(i605[5] > 0* TRUE))


(10) -> (7), if ((i5[10]* i5[7])∧(i7[10]* i7[7])∧(i7[10]* 0))


(12) -> (7), if ((i296[12] - 1* 0)∧(i7[12]* i7[7])∧(i5[12]* i5[7]))


(7) -> (8), if ((i5[7]* i5[8])∧(i7[7]* i436[8])∧(i7[7]* i7[8]))


(9) -> (8), if ((i436[9] - 1* i436[8])∧(i7[9]* i7[8])∧(i5[9]* i5[8]))


(8) -> (9), if ((i7[8]* i7[9])∧(i436[8]* i436[9])∧(i5[8]* i5[9])∧(i436[8] > 0* TRUE))


(13) -> (10), if ((i5[13]* i5[10])∧(i7[13]* 0)∧(i7[13]* i7[10]))


(15) -> (10), if ((i7[15]* i7[10])∧(i187[15] - 1* 0)∧(i5[15]* i5[10]))


(10) -> (11), if ((i7[10]* i7[11])∧(i5[10]* i5[11])∧(i7[10]* i296[11]))


(12) -> (11), if ((i296[12] - 1* i296[11])∧(i5[12]* i5[11])∧(i7[12]* i7[11]))


(11) -> (12), if ((i296[11] > 0* TRUE)∧(i7[11]* i7[12])∧(i296[11]* i296[12])∧(i5[11]* i5[12]))


(16) -> (13), if ((i7[16]* i7[13])∧(i7[16]* 0)∧(i5[16]* i5[13]))


(18) -> (13), if ((i5[18]* i5[13])∧(i104[18] - 1* 0)∧(i7[18]* i7[13]))


(13) -> (14), if ((i7[13]* i187[14])∧(i5[13]* i5[14])∧(i7[13]* i7[14]))


(15) -> (14), if ((i187[15] - 1* i187[14])∧(i5[15]* i5[14])∧(i7[15]* i7[14]))


(14) -> (15), if ((i7[14]* i7[15])∧(i5[14]* i5[15])∧(i187[14]* i187[15])∧(i187[14] > 0* TRUE))


(19) -> (16), if ((i7[19]* 0)∧(i5[19]* i5[16])∧(i7[19]* i7[16]))


(21) -> (16), if ((i7[21]* i7[16])∧(i49[21] - 1* 0)∧(i5[21]* i5[16]))


(16) -> (17), if ((i7[16]* i104[17])∧(i5[16]* i5[17])∧(i7[16]* i7[17]))


(18) -> (17), if ((i104[18] - 1* i104[17])∧(i5[18]* i5[17])∧(i7[18]* i7[17]))


(17) -> (18), if ((i7[17]* i7[18])∧(i5[17]* i5[18])∧(i104[17]* i104[18])∧(i104[17] > 0* TRUE))


(23) -> (19), if ((i5[23]* i5[19])∧(i7[23]* i7[19])∧(i7[23]* 0))


(25) -> (19), if ((i5[25]* i5[19])∧(i5[25]* i7[19])∧(i5[25]* 0))


(27) -> (19), if ((i7[27]* i7[19])∧(i5[27]* i5[19])∧(i20[27] - 1* 0))


(19) -> (20), if ((i7[19]* i49[20])∧(i7[19]* i7[20])∧(i5[19]* i5[20]))


(21) -> (20), if ((i7[21]* i7[20])∧(i49[21] - 1* i49[20])∧(i5[21]* i5[20]))


(20) -> (21), if ((i7[20]* i7[21])∧(i49[20] > 0* TRUE)∧(i5[20]* i5[21])∧(i49[20]* i49[21]))


(0) -> (22), if ((i5[0]* i5[22])∧(i7[0] + 1* i7[22]))


(22) -> (23), if ((i5[22]* i5[23])∧(i7[22] > 0 && i7[22] < 100* TRUE)∧(i7[22]* i7[23]))


(24) -> (25), if ((i5[24] > 0 && i5[24] < 100* TRUE)∧(i5[24]* i5[25]))


(23) -> (26), if ((i7[23]* i7[26])∧(i5[23]* i5[26])∧(i7[23]* i20[26]))


(25) -> (26), if ((i5[25]* i5[26])∧(i5[25]* i7[26])∧(i5[25]* i20[26]))


(27) -> (26), if ((i20[27] - 1* i20[26])∧(i7[27]* i7[26])∧(i5[27]* i5[26]))


(26) -> (27), if ((i20[26] > 0* TRUE)∧(i7[26]* i7[27])∧(i20[26]* i20[27])∧(i5[26]* i5[27]))


(0) -> (28), if ((i5[0]* i5[28])∧(i7[0] + 1* i7[28]))



The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(14) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 4 less nodes.

(15) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


R is empty.

The integer pair graph contains the following rules and edges:
(27): COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], i20[27] - 1)
(26): LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(i20[26] > 0, i5[26], i7[26], i20[26])
(21): COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], i49[21] - 1)
(20): LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(i49[20] > 0, i5[20], i7[20], i49[20])
(18): COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], i104[18] - 1)
(17): LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(i104[17] > 0, i5[17], i7[17], i104[17])
(15): COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], i187[15] - 1)
(14): LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(i187[14] > 0, i5[14], i7[14], i187[14])
(12): COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], i296[12] - 1)
(11): LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(i296[11] > 0, i5[11], i7[11], i296[11])
(9): COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], i436[9] - 1)
(8): LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(i436[8] > 0, i5[8], i7[8], i436[8])
(6): COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], i605[6] - 1)
(5): LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(i605[5] > 0, i5[5], i7[5], i605[5])
(3): COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], i696[3] - 1)
(2): LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(i696[2] > 0, i5[2], i7[2], i696[2])
(1): LOAD949(i5[1], i7[1], 0) → LOAD1100(i5[1], i7[1], i7[1])
(4): LOAD768(i5[4], i7[4], 0) → LOAD949(i5[4], i7[4], i7[4])
(7): LOAD608(i5[7], i7[7], 0) → LOAD768(i5[7], i7[7], i7[7])
(10): LOAD484(i5[10], i7[10], 0) → LOAD608(i5[10], i7[10], i7[10])
(13): LOAD363(i5[13], i7[13], 0) → LOAD484(i5[13], i7[13], i7[13])
(16): LOAD258(i5[16], i7[16], 0) → LOAD363(i5[16], i7[16], i7[16])
(19): LOAD175(i5[19], i7[19], 0) → LOAD258(i5[19], i7[19], i7[19])
(23): COND_LOAD83(TRUE, i5[23], i7[23]) → LOAD175(i5[23], i7[23], i7[23])
(22): LOAD83(i5[22], i7[22]) → COND_LOAD83(i7[22] > 0 && i7[22] < 100, i5[22], i7[22])
(0): LOAD1100(i5[0], i7[0], 0) → LOAD83(i5[0], i7[0] + 1)

(1) -> (0), if ((i7[1]* 0)∧(i5[1]* i5[0])∧(i7[1]* i7[0]))


(3) -> (0), if ((i7[3]* i7[0])∧(i5[3]* i5[0])∧(i696[3] - 1* 0))


(4) -> (1), if ((i5[4]* i5[1])∧(i7[4]* 0)∧(i7[4]* i7[1]))


(6) -> (1), if ((i605[6] - 1* 0)∧(i5[6]* i5[1])∧(i7[6]* i7[1]))


(1) -> (2), if ((i5[1]* i5[2])∧(i7[1]* i7[2])∧(i7[1]* i696[2]))


(3) -> (2), if ((i7[3]* i7[2])∧(i696[3] - 1* i696[2])∧(i5[3]* i5[2]))


(2) -> (3), if ((i5[2]* i5[3])∧(i7[2]* i7[3])∧(i696[2]* i696[3])∧(i696[2] > 0* TRUE))


(7) -> (4), if ((i7[7]* 0)∧(i7[7]* i7[4])∧(i5[7]* i5[4]))


(9) -> (4), if ((i7[9]* i7[4])∧(i436[9] - 1* 0)∧(i5[9]* i5[4]))


(4) -> (5), if ((i7[4]* i7[5])∧(i7[4]* i605[5])∧(i5[4]* i5[5]))


(6) -> (5), if ((i7[6]* i7[5])∧(i605[6] - 1* i605[5])∧(i5[6]* i5[5]))


(5) -> (6), if ((i5[5]* i5[6])∧(i7[5]* i7[6])∧(i605[5]* i605[6])∧(i605[5] > 0* TRUE))


(10) -> (7), if ((i5[10]* i5[7])∧(i7[10]* i7[7])∧(i7[10]* 0))


(12) -> (7), if ((i296[12] - 1* 0)∧(i7[12]* i7[7])∧(i5[12]* i5[7]))


(7) -> (8), if ((i5[7]* i5[8])∧(i7[7]* i436[8])∧(i7[7]* i7[8]))


(9) -> (8), if ((i436[9] - 1* i436[8])∧(i7[9]* i7[8])∧(i5[9]* i5[8]))


(8) -> (9), if ((i7[8]* i7[9])∧(i436[8]* i436[9])∧(i5[8]* i5[9])∧(i436[8] > 0* TRUE))


(13) -> (10), if ((i5[13]* i5[10])∧(i7[13]* 0)∧(i7[13]* i7[10]))


(15) -> (10), if ((i7[15]* i7[10])∧(i187[15] - 1* 0)∧(i5[15]* i5[10]))


(10) -> (11), if ((i7[10]* i7[11])∧(i5[10]* i5[11])∧(i7[10]* i296[11]))


(12) -> (11), if ((i296[12] - 1* i296[11])∧(i5[12]* i5[11])∧(i7[12]* i7[11]))


(11) -> (12), if ((i296[11] > 0* TRUE)∧(i7[11]* i7[12])∧(i296[11]* i296[12])∧(i5[11]* i5[12]))


(16) -> (13), if ((i7[16]* i7[13])∧(i7[16]* 0)∧(i5[16]* i5[13]))


(18) -> (13), if ((i5[18]* i5[13])∧(i104[18] - 1* 0)∧(i7[18]* i7[13]))


(13) -> (14), if ((i7[13]* i187[14])∧(i5[13]* i5[14])∧(i7[13]* i7[14]))


(15) -> (14), if ((i187[15] - 1* i187[14])∧(i5[15]* i5[14])∧(i7[15]* i7[14]))


(14) -> (15), if ((i7[14]* i7[15])∧(i5[14]* i5[15])∧(i187[14]* i187[15])∧(i187[14] > 0* TRUE))


(19) -> (16), if ((i7[19]* 0)∧(i5[19]* i5[16])∧(i7[19]* i7[16]))


(21) -> (16), if ((i7[21]* i7[16])∧(i49[21] - 1* 0)∧(i5[21]* i5[16]))


(16) -> (17), if ((i7[16]* i104[17])∧(i5[16]* i5[17])∧(i7[16]* i7[17]))


(18) -> (17), if ((i104[18] - 1* i104[17])∧(i5[18]* i5[17])∧(i7[18]* i7[17]))


(17) -> (18), if ((i7[17]* i7[18])∧(i5[17]* i5[18])∧(i104[17]* i104[18])∧(i104[17] > 0* TRUE))


(23) -> (19), if ((i5[23]* i5[19])∧(i7[23]* i7[19])∧(i7[23]* 0))


(27) -> (19), if ((i7[27]* i7[19])∧(i5[27]* i5[19])∧(i20[27] - 1* 0))


(19) -> (20), if ((i7[19]* i49[20])∧(i7[19]* i7[20])∧(i5[19]* i5[20]))


(21) -> (20), if ((i7[21]* i7[20])∧(i49[21] - 1* i49[20])∧(i5[21]* i5[20]))


(20) -> (21), if ((i7[20]* i7[21])∧(i49[20] > 0* TRUE)∧(i5[20]* i5[21])∧(i49[20]* i49[21]))


(0) -> (22), if ((i5[0]* i5[22])∧(i7[0] + 1* i7[22]))


(22) -> (23), if ((i5[22]* i5[23])∧(i7[22] > 0 && i7[22] < 100* TRUE)∧(i7[22]* i7[23]))


(23) -> (26), if ((i7[23]* i7[26])∧(i5[23]* i5[26])∧(i7[23]* i20[26]))


(27) -> (26), if ((i20[27] - 1* i20[26])∧(i7[27]* i7[26])∧(i5[27]* i5[26]))


(26) -> (27), if ((i20[26] > 0* TRUE)∧(i7[26]* i7[27])∧(i20[26]* i20[27])∧(i5[26]* i5[27]))



The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(16) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], -(i20[27], 1)) the following chains were created:
  • We consider the chain LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26]), COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], -(i20[27], 1)), LOAD175(i5[19], i7[19], 0) → LOAD258(i5[19], i7[19], i7[19]) which results in the following constraint:

    (1)    (>(i20[26], 0)=TRUEi7[26]=i7[27]i20[26]=i20[27]i5[26]=i5[27]i7[27]=i7[19]i5[27]=i5[19]-(i20[27], 1)=0COND_LOAD175(TRUE, i5[27], i7[27], i20[27])≥NonInfC∧COND_LOAD175(TRUE, i5[27], i7[27], i20[27])≥LOAD175(i5[27], i7[27], -(i20[27], 1))∧(UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i20[26], 0)=TRUE-(i20[26], 1)=0COND_LOAD175(TRUE, i5[26], i7[26], i20[26])≥NonInfC∧COND_LOAD175(TRUE, i5[26], i7[26], i20[26])≥LOAD175(i5[26], i7[26], -(i20[26], 1))∧(UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i20[26] + [-1] ≥ 0∧i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧[(-1)bni_85 + (-1)Bound*bni_85] + [(-1)bni_85]i7[26] ≥ 0∧[(-1)bso_86] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i20[26] + [-1] ≥ 0∧i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧[(-1)bni_85 + (-1)Bound*bni_85] + [(-1)bni_85]i7[26] ≥ 0∧[(-1)bso_86] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i20[26] + [-1] ≥ 0∧i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧[(-1)bni_85 + (-1)Bound*bni_85] + [(-1)bni_85]i7[26] ≥ 0∧[(-1)bso_86] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i20[26] + [-1] ≥ 0∧i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧[(-1)bni_85] = 0∧0 = 0∧[(-1)bni_85 + (-1)Bound*bni_85] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_86] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i20[26] ≥ 0∧i20[26] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧[(-1)bni_85] = 0∧0 = 0∧[(-1)bni_85 + (-1)Bound*bni_85] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_86] ≥ 0)



  • We consider the chain LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26]), COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], -(i20[27], 1)), LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26]) which results in the following constraint:

    (8)    (>(i20[26], 0)=TRUEi7[26]=i7[27]i20[26]=i20[27]i5[26]=i5[27]-(i20[27], 1)=i20[26]1i7[27]=i7[26]1i5[27]=i5[26]1COND_LOAD175(TRUE, i5[27], i7[27], i20[27])≥NonInfC∧COND_LOAD175(TRUE, i5[27], i7[27], i20[27])≥LOAD175(i5[27], i7[27], -(i20[27], 1))∧(UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥))



    We simplified constraint (8) using rules (III), (IV) which results in the following new constraint:

    (9)    (>(i20[26], 0)=TRUECOND_LOAD175(TRUE, i5[26], i7[26], i20[26])≥NonInfC∧COND_LOAD175(TRUE, i5[26], i7[26], i20[26])≥LOAD175(i5[26], i7[26], -(i20[26], 1))∧(UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧[(-1)bni_85 + (-1)Bound*bni_85] + [(-1)bni_85]i7[26] ≥ 0∧[(-1)bso_86] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧[(-1)bni_85 + (-1)Bound*bni_85] + [(-1)bni_85]i7[26] ≥ 0∧[(-1)bso_86] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧[(-1)bni_85 + (-1)Bound*bni_85] + [(-1)bni_85]i7[26] ≥ 0∧[(-1)bso_86] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧[(-1)bni_85] = 0∧0 = 0∧[(-1)bni_85 + (-1)Bound*bni_85] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_86] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i20[26] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧[(-1)bni_85] = 0∧0 = 0∧[(-1)bni_85 + (-1)Bound*bni_85] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_86] ≥ 0)







For Pair LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26]) the following chains were created:
  • We consider the chain LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26]), COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], -(i20[27], 1)) which results in the following constraint:

    (15)    (>(i20[26], 0)=TRUEi7[26]=i7[27]i20[26]=i20[27]i5[26]=i5[27]LOAD175(i5[26], i7[26], i20[26])≥NonInfC∧LOAD175(i5[26], i7[26], i20[26])≥COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])∧(UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥))



    We simplified constraint (15) using rule (IV) which results in the following new constraint:

    (16)    (>(i20[26], 0)=TRUELOAD175(i5[26], i7[26], i20[26])≥NonInfC∧LOAD175(i5[26], i7[26], i20[26])≥COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])∧(UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥))



    We simplified constraint (16) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (17)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥)∧[(-1)bni_87 + (-1)Bound*bni_87] + [(-1)bni_87]i7[26] ≥ 0∧[(-1)bso_88] ≥ 0)



    We simplified constraint (17) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (18)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥)∧[(-1)bni_87 + (-1)Bound*bni_87] + [(-1)bni_87]i7[26] ≥ 0∧[(-1)bso_88] ≥ 0)



    We simplified constraint (18) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (19)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥)∧[(-1)bni_87 + (-1)Bound*bni_87] + [(-1)bni_87]i7[26] ≥ 0∧[(-1)bso_88] ≥ 0)



    We simplified constraint (19) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (20)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥)∧[(-1)bni_87] = 0∧0 = 0∧[(-1)bni_87 + (-1)Bound*bni_87] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_88] ≥ 0)



    We simplified constraint (20) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (21)    (i20[26] ≥ 0 ⇒ (UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥)∧[(-1)bni_87] = 0∧0 = 0∧[(-1)bni_87 + (-1)Bound*bni_87] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_88] ≥ 0)







For Pair COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], -(i49[21], 1)) the following chains were created:
  • We consider the chain LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20]), COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], -(i49[21], 1)), LOAD258(i5[16], i7[16], 0) → LOAD363(i5[16], i7[16], i7[16]) which results in the following constraint:

    (22)    (i7[20]=i7[21]>(i49[20], 0)=TRUEi5[20]=i5[21]i49[20]=i49[21]i7[21]=i7[16]-(i49[21], 1)=0i5[21]=i5[16]COND_LOAD258(TRUE, i5[21], i7[21], i49[21])≥NonInfC∧COND_LOAD258(TRUE, i5[21], i7[21], i49[21])≥LOAD258(i5[21], i7[21], -(i49[21], 1))∧(UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥))



    We simplified constraint (22) using rules (III), (IV) which results in the following new constraint:

    (23)    (>(i49[20], 0)=TRUE-(i49[20], 1)=0COND_LOAD258(TRUE, i5[20], i7[20], i49[20])≥NonInfC∧COND_LOAD258(TRUE, i5[20], i7[20], i49[20])≥LOAD258(i5[20], i7[20], -(i49[20], 1))∧(UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥))



    We simplified constraint (23) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (24)    (i49[20] + [-1] ≥ 0∧i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧[(-1)bni_89 + (-1)Bound*bni_89] + [(-1)bni_89]i7[20] ≥ 0∧[(-1)bso_90] ≥ 0)



    We simplified constraint (24) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (25)    (i49[20] + [-1] ≥ 0∧i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧[(-1)bni_89 + (-1)Bound*bni_89] + [(-1)bni_89]i7[20] ≥ 0∧[(-1)bso_90] ≥ 0)



    We simplified constraint (25) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (26)    (i49[20] + [-1] ≥ 0∧i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧[(-1)bni_89 + (-1)Bound*bni_89] + [(-1)bni_89]i7[20] ≥ 0∧[(-1)bso_90] ≥ 0)



    We simplified constraint (26) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (27)    (i49[20] + [-1] ≥ 0∧i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧[(-1)bni_89] = 0∧0 = 0∧[(-1)bni_89 + (-1)Bound*bni_89] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_90] ≥ 0)



    We simplified constraint (27) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (28)    (i49[20] ≥ 0∧i49[20] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧[(-1)bni_89] = 0∧0 = 0∧[(-1)bni_89 + (-1)Bound*bni_89] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_90] ≥ 0)



  • We consider the chain LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20]), COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], -(i49[21], 1)), LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20]) which results in the following constraint:

    (29)    (i7[20]=i7[21]>(i49[20], 0)=TRUEi5[20]=i5[21]i49[20]=i49[21]i7[21]=i7[20]1-(i49[21], 1)=i49[20]1i5[21]=i5[20]1COND_LOAD258(TRUE, i5[21], i7[21], i49[21])≥NonInfC∧COND_LOAD258(TRUE, i5[21], i7[21], i49[21])≥LOAD258(i5[21], i7[21], -(i49[21], 1))∧(UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥))



    We simplified constraint (29) using rules (III), (IV) which results in the following new constraint:

    (30)    (>(i49[20], 0)=TRUECOND_LOAD258(TRUE, i5[20], i7[20], i49[20])≥NonInfC∧COND_LOAD258(TRUE, i5[20], i7[20], i49[20])≥LOAD258(i5[20], i7[20], -(i49[20], 1))∧(UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥))



    We simplified constraint (30) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (31)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧[(-1)bni_89 + (-1)Bound*bni_89] + [(-1)bni_89]i7[20] ≥ 0∧[(-1)bso_90] ≥ 0)



    We simplified constraint (31) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (32)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧[(-1)bni_89 + (-1)Bound*bni_89] + [(-1)bni_89]i7[20] ≥ 0∧[(-1)bso_90] ≥ 0)



    We simplified constraint (32) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (33)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧[(-1)bni_89 + (-1)Bound*bni_89] + [(-1)bni_89]i7[20] ≥ 0∧[(-1)bso_90] ≥ 0)



    We simplified constraint (33) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (34)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧[(-1)bni_89] = 0∧0 = 0∧[(-1)bni_89 + (-1)Bound*bni_89] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_90] ≥ 0)



    We simplified constraint (34) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (35)    (i49[20] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧[(-1)bni_89] = 0∧0 = 0∧[(-1)bni_89 + (-1)Bound*bni_89] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_90] ≥ 0)







For Pair LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20]) the following chains were created:
  • We consider the chain LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20]), COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], -(i49[21], 1)) which results in the following constraint:

    (36)    (i7[20]=i7[21]>(i49[20], 0)=TRUEi5[20]=i5[21]i49[20]=i49[21]LOAD258(i5[20], i7[20], i49[20])≥NonInfC∧LOAD258(i5[20], i7[20], i49[20])≥COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])∧(UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥))



    We simplified constraint (36) using rule (IV) which results in the following new constraint:

    (37)    (>(i49[20], 0)=TRUELOAD258(i5[20], i7[20], i49[20])≥NonInfC∧LOAD258(i5[20], i7[20], i49[20])≥COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])∧(UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥))



    We simplified constraint (37) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (38)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥)∧[(-1)bni_91 + (-1)Bound*bni_91] + [(-1)bni_91]i7[20] ≥ 0∧[(-1)bso_92] ≥ 0)



    We simplified constraint (38) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (39)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥)∧[(-1)bni_91 + (-1)Bound*bni_91] + [(-1)bni_91]i7[20] ≥ 0∧[(-1)bso_92] ≥ 0)



    We simplified constraint (39) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (40)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥)∧[(-1)bni_91 + (-1)Bound*bni_91] + [(-1)bni_91]i7[20] ≥ 0∧[(-1)bso_92] ≥ 0)



    We simplified constraint (40) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (41)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥)∧[(-1)bni_91] = 0∧0 = 0∧[(-1)bni_91 + (-1)Bound*bni_91] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_92] ≥ 0)



    We simplified constraint (41) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (42)    (i49[20] ≥ 0 ⇒ (UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥)∧[(-1)bni_91] = 0∧0 = 0∧[(-1)bni_91 + (-1)Bound*bni_91] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_92] ≥ 0)







For Pair COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], -(i104[18], 1)) the following chains were created:
  • We consider the chain LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17]), COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], -(i104[18], 1)), LOAD363(i5[13], i7[13], 0) → LOAD484(i5[13], i7[13], i7[13]) which results in the following constraint:

    (43)    (i7[17]=i7[18]i5[17]=i5[18]i104[17]=i104[18]>(i104[17], 0)=TRUEi5[18]=i5[13]-(i104[18], 1)=0i7[18]=i7[13]COND_LOAD363(TRUE, i5[18], i7[18], i104[18])≥NonInfC∧COND_LOAD363(TRUE, i5[18], i7[18], i104[18])≥LOAD363(i5[18], i7[18], -(i104[18], 1))∧(UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥))



    We simplified constraint (43) using rules (III), (IV) which results in the following new constraint:

    (44)    (>(i104[17], 0)=TRUE-(i104[17], 1)=0COND_LOAD363(TRUE, i5[17], i7[17], i104[17])≥NonInfC∧COND_LOAD363(TRUE, i5[17], i7[17], i104[17])≥LOAD363(i5[17], i7[17], -(i104[17], 1))∧(UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥))



    We simplified constraint (44) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (45)    (i104[17] + [-1] ≥ 0∧i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧[(-1)bni_93 + (-1)Bound*bni_93] + [(-1)bni_93]i7[17] ≥ 0∧[(-1)bso_94] ≥ 0)



    We simplified constraint (45) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (46)    (i104[17] + [-1] ≥ 0∧i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧[(-1)bni_93 + (-1)Bound*bni_93] + [(-1)bni_93]i7[17] ≥ 0∧[(-1)bso_94] ≥ 0)



    We simplified constraint (46) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (47)    (i104[17] + [-1] ≥ 0∧i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧[(-1)bni_93 + (-1)Bound*bni_93] + [(-1)bni_93]i7[17] ≥ 0∧[(-1)bso_94] ≥ 0)



    We simplified constraint (47) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (48)    (i104[17] + [-1] ≥ 0∧i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧[(-1)bni_93] = 0∧0 = 0∧[(-1)bni_93 + (-1)Bound*bni_93] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_94] ≥ 0)



    We simplified constraint (48) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (49)    (i104[17] ≥ 0∧i104[17] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧[(-1)bni_93] = 0∧0 = 0∧[(-1)bni_93 + (-1)Bound*bni_93] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_94] ≥ 0)



  • We consider the chain LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17]), COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], -(i104[18], 1)), LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17]) which results in the following constraint:

    (50)    (i7[17]=i7[18]i5[17]=i5[18]i104[17]=i104[18]>(i104[17], 0)=TRUE-(i104[18], 1)=i104[17]1i5[18]=i5[17]1i7[18]=i7[17]1COND_LOAD363(TRUE, i5[18], i7[18], i104[18])≥NonInfC∧COND_LOAD363(TRUE, i5[18], i7[18], i104[18])≥LOAD363(i5[18], i7[18], -(i104[18], 1))∧(UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥))



    We simplified constraint (50) using rules (III), (IV) which results in the following new constraint:

    (51)    (>(i104[17], 0)=TRUECOND_LOAD363(TRUE, i5[17], i7[17], i104[17])≥NonInfC∧COND_LOAD363(TRUE, i5[17], i7[17], i104[17])≥LOAD363(i5[17], i7[17], -(i104[17], 1))∧(UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥))



    We simplified constraint (51) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (52)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧[(-1)bni_93 + (-1)Bound*bni_93] + [(-1)bni_93]i7[17] ≥ 0∧[(-1)bso_94] ≥ 0)



    We simplified constraint (52) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (53)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧[(-1)bni_93 + (-1)Bound*bni_93] + [(-1)bni_93]i7[17] ≥ 0∧[(-1)bso_94] ≥ 0)



    We simplified constraint (53) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (54)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧[(-1)bni_93 + (-1)Bound*bni_93] + [(-1)bni_93]i7[17] ≥ 0∧[(-1)bso_94] ≥ 0)



    We simplified constraint (54) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (55)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧[(-1)bni_93] = 0∧0 = 0∧[(-1)bni_93 + (-1)Bound*bni_93] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_94] ≥ 0)



    We simplified constraint (55) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (56)    (i104[17] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧[(-1)bni_93] = 0∧0 = 0∧[(-1)bni_93 + (-1)Bound*bni_93] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_94] ≥ 0)







For Pair LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17]) the following chains were created:
  • We consider the chain LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17]), COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], -(i104[18], 1)) which results in the following constraint:

    (57)    (i7[17]=i7[18]i5[17]=i5[18]i104[17]=i104[18]>(i104[17], 0)=TRUELOAD363(i5[17], i7[17], i104[17])≥NonInfC∧LOAD363(i5[17], i7[17], i104[17])≥COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])∧(UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥))



    We simplified constraint (57) using rule (IV) which results in the following new constraint:

    (58)    (>(i104[17], 0)=TRUELOAD363(i5[17], i7[17], i104[17])≥NonInfC∧LOAD363(i5[17], i7[17], i104[17])≥COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])∧(UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥))



    We simplified constraint (58) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (59)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥)∧[(-1)bni_95 + (-1)Bound*bni_95] + [(-1)bni_95]i7[17] ≥ 0∧[(-1)bso_96] ≥ 0)



    We simplified constraint (59) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (60)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥)∧[(-1)bni_95 + (-1)Bound*bni_95] + [(-1)bni_95]i7[17] ≥ 0∧[(-1)bso_96] ≥ 0)



    We simplified constraint (60) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (61)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥)∧[(-1)bni_95 + (-1)Bound*bni_95] + [(-1)bni_95]i7[17] ≥ 0∧[(-1)bso_96] ≥ 0)



    We simplified constraint (61) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (62)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥)∧[(-1)bni_95] = 0∧0 = 0∧[(-1)bni_95 + (-1)Bound*bni_95] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_96] ≥ 0)



    We simplified constraint (62) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (63)    (i104[17] ≥ 0 ⇒ (UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥)∧[(-1)bni_95] = 0∧0 = 0∧[(-1)bni_95 + (-1)Bound*bni_95] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_96] ≥ 0)







For Pair COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], -(i187[15], 1)) the following chains were created:
  • We consider the chain LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14]), COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], -(i187[15], 1)), LOAD484(i5[10], i7[10], 0) → LOAD608(i5[10], i7[10], i7[10]) which results in the following constraint:

    (64)    (i7[14]=i7[15]i5[14]=i5[15]i187[14]=i187[15]>(i187[14], 0)=TRUEi7[15]=i7[10]-(i187[15], 1)=0i5[15]=i5[10]COND_LOAD484(TRUE, i5[15], i7[15], i187[15])≥NonInfC∧COND_LOAD484(TRUE, i5[15], i7[15], i187[15])≥LOAD484(i5[15], i7[15], -(i187[15], 1))∧(UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥))



    We simplified constraint (64) using rules (III), (IV) which results in the following new constraint:

    (65)    (>(i187[14], 0)=TRUE-(i187[14], 1)=0COND_LOAD484(TRUE, i5[14], i7[14], i187[14])≥NonInfC∧COND_LOAD484(TRUE, i5[14], i7[14], i187[14])≥LOAD484(i5[14], i7[14], -(i187[14], 1))∧(UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥))



    We simplified constraint (65) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (66)    (i187[14] + [-1] ≥ 0∧i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧[(-1)bni_97 + (-1)Bound*bni_97] + [(-1)bni_97]i7[14] ≥ 0∧[(-1)bso_98] ≥ 0)



    We simplified constraint (66) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (67)    (i187[14] + [-1] ≥ 0∧i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧[(-1)bni_97 + (-1)Bound*bni_97] + [(-1)bni_97]i7[14] ≥ 0∧[(-1)bso_98] ≥ 0)



    We simplified constraint (67) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (68)    (i187[14] + [-1] ≥ 0∧i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧[(-1)bni_97 + (-1)Bound*bni_97] + [(-1)bni_97]i7[14] ≥ 0∧[(-1)bso_98] ≥ 0)



    We simplified constraint (68) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (69)    (i187[14] + [-1] ≥ 0∧i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧[(-1)bni_97] = 0∧0 = 0∧[(-1)bni_97 + (-1)Bound*bni_97] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_98] ≥ 0)



    We simplified constraint (69) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (70)    (i187[14] ≥ 0∧i187[14] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧[(-1)bni_97] = 0∧0 = 0∧[(-1)bni_97 + (-1)Bound*bni_97] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_98] ≥ 0)



  • We consider the chain LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14]), COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], -(i187[15], 1)), LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14]) which results in the following constraint:

    (71)    (i7[14]=i7[15]i5[14]=i5[15]i187[14]=i187[15]>(i187[14], 0)=TRUE-(i187[15], 1)=i187[14]1i5[15]=i5[14]1i7[15]=i7[14]1COND_LOAD484(TRUE, i5[15], i7[15], i187[15])≥NonInfC∧COND_LOAD484(TRUE, i5[15], i7[15], i187[15])≥LOAD484(i5[15], i7[15], -(i187[15], 1))∧(UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥))



    We simplified constraint (71) using rules (III), (IV) which results in the following new constraint:

    (72)    (>(i187[14], 0)=TRUECOND_LOAD484(TRUE, i5[14], i7[14], i187[14])≥NonInfC∧COND_LOAD484(TRUE, i5[14], i7[14], i187[14])≥LOAD484(i5[14], i7[14], -(i187[14], 1))∧(UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥))



    We simplified constraint (72) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (73)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧[(-1)bni_97 + (-1)Bound*bni_97] + [(-1)bni_97]i7[14] ≥ 0∧[(-1)bso_98] ≥ 0)



    We simplified constraint (73) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (74)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧[(-1)bni_97 + (-1)Bound*bni_97] + [(-1)bni_97]i7[14] ≥ 0∧[(-1)bso_98] ≥ 0)



    We simplified constraint (74) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (75)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧[(-1)bni_97 + (-1)Bound*bni_97] + [(-1)bni_97]i7[14] ≥ 0∧[(-1)bso_98] ≥ 0)



    We simplified constraint (75) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (76)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧[(-1)bni_97] = 0∧0 = 0∧[(-1)bni_97 + (-1)Bound*bni_97] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_98] ≥ 0)



    We simplified constraint (76) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (77)    (i187[14] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧[(-1)bni_97] = 0∧0 = 0∧[(-1)bni_97 + (-1)Bound*bni_97] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_98] ≥ 0)







For Pair LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14]) the following chains were created:
  • We consider the chain LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14]), COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], -(i187[15], 1)) which results in the following constraint:

    (78)    (i7[14]=i7[15]i5[14]=i5[15]i187[14]=i187[15]>(i187[14], 0)=TRUELOAD484(i5[14], i7[14], i187[14])≥NonInfC∧LOAD484(i5[14], i7[14], i187[14])≥COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])∧(UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥))



    We simplified constraint (78) using rule (IV) which results in the following new constraint:

    (79)    (>(i187[14], 0)=TRUELOAD484(i5[14], i7[14], i187[14])≥NonInfC∧LOAD484(i5[14], i7[14], i187[14])≥COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])∧(UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥))



    We simplified constraint (79) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (80)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥)∧[(-1)bni_99 + (-1)Bound*bni_99] + [(-1)bni_99]i7[14] ≥ 0∧[(-1)bso_100] ≥ 0)



    We simplified constraint (80) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (81)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥)∧[(-1)bni_99 + (-1)Bound*bni_99] + [(-1)bni_99]i7[14] ≥ 0∧[(-1)bso_100] ≥ 0)



    We simplified constraint (81) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (82)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥)∧[(-1)bni_99 + (-1)Bound*bni_99] + [(-1)bni_99]i7[14] ≥ 0∧[(-1)bso_100] ≥ 0)



    We simplified constraint (82) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (83)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥)∧[(-1)bni_99] = 0∧0 = 0∧[(-1)bni_99 + (-1)Bound*bni_99] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_100] ≥ 0)



    We simplified constraint (83) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (84)    (i187[14] ≥ 0 ⇒ (UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥)∧[(-1)bni_99] = 0∧0 = 0∧[(-1)bni_99 + (-1)Bound*bni_99] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_100] ≥ 0)







For Pair COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], -(i296[12], 1)) the following chains were created:
  • We consider the chain LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11]), COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], -(i296[12], 1)), LOAD608(i5[7], i7[7], 0) → LOAD768(i5[7], i7[7], i7[7]) which results in the following constraint:

    (85)    (>(i296[11], 0)=TRUEi7[11]=i7[12]i296[11]=i296[12]i5[11]=i5[12]-(i296[12], 1)=0i7[12]=i7[7]i5[12]=i5[7]COND_LOAD608(TRUE, i5[12], i7[12], i296[12])≥NonInfC∧COND_LOAD608(TRUE, i5[12], i7[12], i296[12])≥LOAD608(i5[12], i7[12], -(i296[12], 1))∧(UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥))



    We simplified constraint (85) using rules (III), (IV) which results in the following new constraint:

    (86)    (>(i296[11], 0)=TRUE-(i296[11], 1)=0COND_LOAD608(TRUE, i5[11], i7[11], i296[11])≥NonInfC∧COND_LOAD608(TRUE, i5[11], i7[11], i296[11])≥LOAD608(i5[11], i7[11], -(i296[11], 1))∧(UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥))



    We simplified constraint (86) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (87)    (i296[11] + [-1] ≥ 0∧i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧[(-1)bni_101 + (-1)Bound*bni_101] + [(-1)bni_101]i7[11] ≥ 0∧[(-1)bso_102] ≥ 0)



    We simplified constraint (87) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (88)    (i296[11] + [-1] ≥ 0∧i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧[(-1)bni_101 + (-1)Bound*bni_101] + [(-1)bni_101]i7[11] ≥ 0∧[(-1)bso_102] ≥ 0)



    We simplified constraint (88) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (89)    (i296[11] + [-1] ≥ 0∧i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧[(-1)bni_101 + (-1)Bound*bni_101] + [(-1)bni_101]i7[11] ≥ 0∧[(-1)bso_102] ≥ 0)



    We simplified constraint (89) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (90)    (i296[11] + [-1] ≥ 0∧i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧[(-1)bni_101] = 0∧0 = 0∧[(-1)bni_101 + (-1)Bound*bni_101] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_102] ≥ 0)



    We simplified constraint (90) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (91)    (i296[11] ≥ 0∧i296[11] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧[(-1)bni_101] = 0∧0 = 0∧[(-1)bni_101 + (-1)Bound*bni_101] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_102] ≥ 0)



  • We consider the chain LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11]), COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], -(i296[12], 1)), LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11]) which results in the following constraint:

    (92)    (>(i296[11], 0)=TRUEi7[11]=i7[12]i296[11]=i296[12]i5[11]=i5[12]-(i296[12], 1)=i296[11]1i5[12]=i5[11]1i7[12]=i7[11]1COND_LOAD608(TRUE, i5[12], i7[12], i296[12])≥NonInfC∧COND_LOAD608(TRUE, i5[12], i7[12], i296[12])≥LOAD608(i5[12], i7[12], -(i296[12], 1))∧(UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥))



    We simplified constraint (92) using rules (III), (IV) which results in the following new constraint:

    (93)    (>(i296[11], 0)=TRUECOND_LOAD608(TRUE, i5[11], i7[11], i296[11])≥NonInfC∧COND_LOAD608(TRUE, i5[11], i7[11], i296[11])≥LOAD608(i5[11], i7[11], -(i296[11], 1))∧(UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥))



    We simplified constraint (93) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (94)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧[(-1)bni_101 + (-1)Bound*bni_101] + [(-1)bni_101]i7[11] ≥ 0∧[(-1)bso_102] ≥ 0)



    We simplified constraint (94) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (95)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧[(-1)bni_101 + (-1)Bound*bni_101] + [(-1)bni_101]i7[11] ≥ 0∧[(-1)bso_102] ≥ 0)



    We simplified constraint (95) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (96)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧[(-1)bni_101 + (-1)Bound*bni_101] + [(-1)bni_101]i7[11] ≥ 0∧[(-1)bso_102] ≥ 0)



    We simplified constraint (96) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (97)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧[(-1)bni_101] = 0∧0 = 0∧[(-1)bni_101 + (-1)Bound*bni_101] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_102] ≥ 0)



    We simplified constraint (97) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (98)    (i296[11] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧[(-1)bni_101] = 0∧0 = 0∧[(-1)bni_101 + (-1)Bound*bni_101] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_102] ≥ 0)







For Pair LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11]) the following chains were created:
  • We consider the chain LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11]), COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], -(i296[12], 1)) which results in the following constraint:

    (99)    (>(i296[11], 0)=TRUEi7[11]=i7[12]i296[11]=i296[12]i5[11]=i5[12]LOAD608(i5[11], i7[11], i296[11])≥NonInfC∧LOAD608(i5[11], i7[11], i296[11])≥COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])∧(UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥))



    We simplified constraint (99) using rule (IV) which results in the following new constraint:

    (100)    (>(i296[11], 0)=TRUELOAD608(i5[11], i7[11], i296[11])≥NonInfC∧LOAD608(i5[11], i7[11], i296[11])≥COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])∧(UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥))



    We simplified constraint (100) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (101)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥)∧[(-1)bni_103 + (-1)Bound*bni_103] + [(-1)bni_103]i7[11] ≥ 0∧[(-1)bso_104] ≥ 0)



    We simplified constraint (101) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (102)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥)∧[(-1)bni_103 + (-1)Bound*bni_103] + [(-1)bni_103]i7[11] ≥ 0∧[(-1)bso_104] ≥ 0)



    We simplified constraint (102) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (103)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥)∧[(-1)bni_103 + (-1)Bound*bni_103] + [(-1)bni_103]i7[11] ≥ 0∧[(-1)bso_104] ≥ 0)



    We simplified constraint (103) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (104)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥)∧[(-1)bni_103] = 0∧0 = 0∧[(-1)bni_103 + (-1)Bound*bni_103] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_104] ≥ 0)



    We simplified constraint (104) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (105)    (i296[11] ≥ 0 ⇒ (UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥)∧[(-1)bni_103] = 0∧0 = 0∧[(-1)bni_103 + (-1)Bound*bni_103] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_104] ≥ 0)







For Pair COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], -(i436[9], 1)) the following chains were created:
  • We consider the chain LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8]), COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], -(i436[9], 1)), LOAD768(i5[4], i7[4], 0) → LOAD949(i5[4], i7[4], i7[4]) which results in the following constraint:

    (106)    (i7[8]=i7[9]i436[8]=i436[9]i5[8]=i5[9]>(i436[8], 0)=TRUEi7[9]=i7[4]-(i436[9], 1)=0i5[9]=i5[4]COND_LOAD768(TRUE, i5[9], i7[9], i436[9])≥NonInfC∧COND_LOAD768(TRUE, i5[9], i7[9], i436[9])≥LOAD768(i5[9], i7[9], -(i436[9], 1))∧(UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥))



    We simplified constraint (106) using rules (III), (IV) which results in the following new constraint:

    (107)    (>(i436[8], 0)=TRUE-(i436[8], 1)=0COND_LOAD768(TRUE, i5[8], i7[8], i436[8])≥NonInfC∧COND_LOAD768(TRUE, i5[8], i7[8], i436[8])≥LOAD768(i5[8], i7[8], -(i436[8], 1))∧(UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥))



    We simplified constraint (107) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (108)    (i436[8] + [-1] ≥ 0∧i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧[(-1)bni_105 + (-1)Bound*bni_105] + [(-1)bni_105]i7[8] ≥ 0∧[(-1)bso_106] ≥ 0)



    We simplified constraint (108) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (109)    (i436[8] + [-1] ≥ 0∧i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧[(-1)bni_105 + (-1)Bound*bni_105] + [(-1)bni_105]i7[8] ≥ 0∧[(-1)bso_106] ≥ 0)



    We simplified constraint (109) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (110)    (i436[8] + [-1] ≥ 0∧i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧[(-1)bni_105 + (-1)Bound*bni_105] + [(-1)bni_105]i7[8] ≥ 0∧[(-1)bso_106] ≥ 0)



    We simplified constraint (110) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (111)    (i436[8] + [-1] ≥ 0∧i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧[(-1)bni_105] = 0∧0 = 0∧[(-1)bni_105 + (-1)Bound*bni_105] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_106] ≥ 0)



    We simplified constraint (111) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (112)    (i436[8] ≥ 0∧i436[8] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧[(-1)bni_105] = 0∧0 = 0∧[(-1)bni_105 + (-1)Bound*bni_105] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_106] ≥ 0)



  • We consider the chain LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8]), COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], -(i436[9], 1)), LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8]) which results in the following constraint:

    (113)    (i7[8]=i7[9]i436[8]=i436[9]i5[8]=i5[9]>(i436[8], 0)=TRUE-(i436[9], 1)=i436[8]1i7[9]=i7[8]1i5[9]=i5[8]1COND_LOAD768(TRUE, i5[9], i7[9], i436[9])≥NonInfC∧COND_LOAD768(TRUE, i5[9], i7[9], i436[9])≥LOAD768(i5[9], i7[9], -(i436[9], 1))∧(UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥))



    We simplified constraint (113) using rules (III), (IV) which results in the following new constraint:

    (114)    (>(i436[8], 0)=TRUECOND_LOAD768(TRUE, i5[8], i7[8], i436[8])≥NonInfC∧COND_LOAD768(TRUE, i5[8], i7[8], i436[8])≥LOAD768(i5[8], i7[8], -(i436[8], 1))∧(UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥))



    We simplified constraint (114) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (115)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧[(-1)bni_105 + (-1)Bound*bni_105] + [(-1)bni_105]i7[8] ≥ 0∧[(-1)bso_106] ≥ 0)



    We simplified constraint (115) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (116)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧[(-1)bni_105 + (-1)Bound*bni_105] + [(-1)bni_105]i7[8] ≥ 0∧[(-1)bso_106] ≥ 0)



    We simplified constraint (116) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (117)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧[(-1)bni_105 + (-1)Bound*bni_105] + [(-1)bni_105]i7[8] ≥ 0∧[(-1)bso_106] ≥ 0)



    We simplified constraint (117) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (118)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧[(-1)bni_105] = 0∧0 = 0∧[(-1)bni_105 + (-1)Bound*bni_105] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_106] ≥ 0)



    We simplified constraint (118) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (119)    (i436[8] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧[(-1)bni_105] = 0∧0 = 0∧[(-1)bni_105 + (-1)Bound*bni_105] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_106] ≥ 0)







For Pair LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8]) the following chains were created:
  • We consider the chain LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8]), COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], -(i436[9], 1)) which results in the following constraint:

    (120)    (i7[8]=i7[9]i436[8]=i436[9]i5[8]=i5[9]>(i436[8], 0)=TRUELOAD768(i5[8], i7[8], i436[8])≥NonInfC∧LOAD768(i5[8], i7[8], i436[8])≥COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])∧(UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥))



    We simplified constraint (120) using rule (IV) which results in the following new constraint:

    (121)    (>(i436[8], 0)=TRUELOAD768(i5[8], i7[8], i436[8])≥NonInfC∧LOAD768(i5[8], i7[8], i436[8])≥COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])∧(UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥))



    We simplified constraint (121) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (122)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥)∧[(-1)bni_107 + (-1)Bound*bni_107] + [(-1)bni_107]i7[8] ≥ 0∧[(-1)bso_108] ≥ 0)



    We simplified constraint (122) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (123)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥)∧[(-1)bni_107 + (-1)Bound*bni_107] + [(-1)bni_107]i7[8] ≥ 0∧[(-1)bso_108] ≥ 0)



    We simplified constraint (123) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (124)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥)∧[(-1)bni_107 + (-1)Bound*bni_107] + [(-1)bni_107]i7[8] ≥ 0∧[(-1)bso_108] ≥ 0)



    We simplified constraint (124) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (125)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥)∧[(-1)bni_107] = 0∧0 = 0∧[(-1)bni_107 + (-1)Bound*bni_107] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_108] ≥ 0)



    We simplified constraint (125) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (126)    (i436[8] ≥ 0 ⇒ (UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥)∧[(-1)bni_107] = 0∧0 = 0∧[(-1)bni_107 + (-1)Bound*bni_107] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_108] ≥ 0)







For Pair COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], -(i605[6], 1)) the following chains were created:
  • We consider the chain LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5]), COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], -(i605[6], 1)), LOAD949(i5[1], i7[1], 0) → LOAD1100(i5[1], i7[1], i7[1]) which results in the following constraint:

    (127)    (i5[5]=i5[6]i7[5]=i7[6]i605[5]=i605[6]>(i605[5], 0)=TRUE-(i605[6], 1)=0i5[6]=i5[1]i7[6]=i7[1]COND_LOAD949(TRUE, i5[6], i7[6], i605[6])≥NonInfC∧COND_LOAD949(TRUE, i5[6], i7[6], i605[6])≥LOAD949(i5[6], i7[6], -(i605[6], 1))∧(UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥))



    We simplified constraint (127) using rules (III), (IV) which results in the following new constraint:

    (128)    (>(i605[5], 0)=TRUE-(i605[5], 1)=0COND_LOAD949(TRUE, i5[5], i7[5], i605[5])≥NonInfC∧COND_LOAD949(TRUE, i5[5], i7[5], i605[5])≥LOAD949(i5[5], i7[5], -(i605[5], 1))∧(UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥))



    We simplified constraint (128) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (129)    (i605[5] + [-1] ≥ 0∧i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧[(-1)bni_109 + (-1)Bound*bni_109] + [(-1)bni_109]i7[5] ≥ 0∧[(-1)bso_110] ≥ 0)



    We simplified constraint (129) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (130)    (i605[5] + [-1] ≥ 0∧i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧[(-1)bni_109 + (-1)Bound*bni_109] + [(-1)bni_109]i7[5] ≥ 0∧[(-1)bso_110] ≥ 0)



    We simplified constraint (130) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (131)    (i605[5] + [-1] ≥ 0∧i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧[(-1)bni_109 + (-1)Bound*bni_109] + [(-1)bni_109]i7[5] ≥ 0∧[(-1)bso_110] ≥ 0)



    We simplified constraint (131) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (132)    (i605[5] + [-1] ≥ 0∧i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧[(-1)bni_109] = 0∧0 = 0∧[(-1)bni_109 + (-1)Bound*bni_109] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_110] ≥ 0)



    We simplified constraint (132) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (133)    (i605[5] ≥ 0∧i605[5] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧[(-1)bni_109] = 0∧0 = 0∧[(-1)bni_109 + (-1)Bound*bni_109] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_110] ≥ 0)



  • We consider the chain LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5]), COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], -(i605[6], 1)), LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5]) which results in the following constraint:

    (134)    (i5[5]=i5[6]i7[5]=i7[6]i605[5]=i605[6]>(i605[5], 0)=TRUEi7[6]=i7[5]1-(i605[6], 1)=i605[5]1i5[6]=i5[5]1COND_LOAD949(TRUE, i5[6], i7[6], i605[6])≥NonInfC∧COND_LOAD949(TRUE, i5[6], i7[6], i605[6])≥LOAD949(i5[6], i7[6], -(i605[6], 1))∧(UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥))



    We simplified constraint (134) using rules (III), (IV) which results in the following new constraint:

    (135)    (>(i605[5], 0)=TRUECOND_LOAD949(TRUE, i5[5], i7[5], i605[5])≥NonInfC∧COND_LOAD949(TRUE, i5[5], i7[5], i605[5])≥LOAD949(i5[5], i7[5], -(i605[5], 1))∧(UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥))



    We simplified constraint (135) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (136)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧[(-1)bni_109 + (-1)Bound*bni_109] + [(-1)bni_109]i7[5] ≥ 0∧[(-1)bso_110] ≥ 0)



    We simplified constraint (136) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (137)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧[(-1)bni_109 + (-1)Bound*bni_109] + [(-1)bni_109]i7[5] ≥ 0∧[(-1)bso_110] ≥ 0)



    We simplified constraint (137) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (138)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧[(-1)bni_109 + (-1)Bound*bni_109] + [(-1)bni_109]i7[5] ≥ 0∧[(-1)bso_110] ≥ 0)



    We simplified constraint (138) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (139)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧[(-1)bni_109] = 0∧0 = 0∧[(-1)bni_109 + (-1)Bound*bni_109] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_110] ≥ 0)



    We simplified constraint (139) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (140)    (i605[5] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧[(-1)bni_109] = 0∧0 = 0∧[(-1)bni_109 + (-1)Bound*bni_109] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_110] ≥ 0)







For Pair LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5]) the following chains were created:
  • We consider the chain LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5]), COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], -(i605[6], 1)) which results in the following constraint:

    (141)    (i5[5]=i5[6]i7[5]=i7[6]i605[5]=i605[6]>(i605[5], 0)=TRUELOAD949(i5[5], i7[5], i605[5])≥NonInfC∧LOAD949(i5[5], i7[5], i605[5])≥COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])∧(UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥))



    We simplified constraint (141) using rule (IV) which results in the following new constraint:

    (142)    (>(i605[5], 0)=TRUELOAD949(i5[5], i7[5], i605[5])≥NonInfC∧LOAD949(i5[5], i7[5], i605[5])≥COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])∧(UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥))



    We simplified constraint (142) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (143)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥)∧[(-1)bni_111 + (-1)Bound*bni_111] + [(-1)bni_111]i7[5] ≥ 0∧[(-1)bso_112] ≥ 0)



    We simplified constraint (143) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (144)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥)∧[(-1)bni_111 + (-1)Bound*bni_111] + [(-1)bni_111]i7[5] ≥ 0∧[(-1)bso_112] ≥ 0)



    We simplified constraint (144) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (145)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥)∧[(-1)bni_111 + (-1)Bound*bni_111] + [(-1)bni_111]i7[5] ≥ 0∧[(-1)bso_112] ≥ 0)



    We simplified constraint (145) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (146)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥)∧[(-1)bni_111] = 0∧0 = 0∧[(-1)bni_111 + (-1)Bound*bni_111] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_112] ≥ 0)



    We simplified constraint (146) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (147)    (i605[5] ≥ 0 ⇒ (UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥)∧[(-1)bni_111] = 0∧0 = 0∧[(-1)bni_111 + (-1)Bound*bni_111] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_112] ≥ 0)







For Pair COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], -(i696[3], 1)) the following chains were created:
  • We consider the chain LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2]), COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], -(i696[3], 1)), LOAD1100(i5[0], i7[0], 0) → LOAD83(i5[0], +(i7[0], 1)) which results in the following constraint:

    (148)    (i5[2]=i5[3]i7[2]=i7[3]i696[2]=i696[3]>(i696[2], 0)=TRUEi7[3]=i7[0]i5[3]=i5[0]-(i696[3], 1)=0COND_LOAD1100(TRUE, i5[3], i7[3], i696[3])≥NonInfC∧COND_LOAD1100(TRUE, i5[3], i7[3], i696[3])≥LOAD1100(i5[3], i7[3], -(i696[3], 1))∧(UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥))



    We simplified constraint (148) using rules (III), (IV) which results in the following new constraint:

    (149)    (>(i696[2], 0)=TRUE-(i696[2], 1)=0COND_LOAD1100(TRUE, i5[2], i7[2], i696[2])≥NonInfC∧COND_LOAD1100(TRUE, i5[2], i7[2], i696[2])≥LOAD1100(i5[2], i7[2], -(i696[2], 1))∧(UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥))



    We simplified constraint (149) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (150)    (i696[2] + [-1] ≥ 0∧i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧[(-1)bni_113 + (-1)Bound*bni_113] + [(-1)bni_113]i7[2] ≥ 0∧[(-1)bso_114] ≥ 0)



    We simplified constraint (150) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (151)    (i696[2] + [-1] ≥ 0∧i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧[(-1)bni_113 + (-1)Bound*bni_113] + [(-1)bni_113]i7[2] ≥ 0∧[(-1)bso_114] ≥ 0)



    We simplified constraint (151) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (152)    (i696[2] + [-1] ≥ 0∧i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧[(-1)bni_113 + (-1)Bound*bni_113] + [(-1)bni_113]i7[2] ≥ 0∧[(-1)bso_114] ≥ 0)



    We simplified constraint (152) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (153)    (i696[2] + [-1] ≥ 0∧i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧[(-1)bni_113] = 0∧0 = 0∧[(-1)bni_113 + (-1)Bound*bni_113] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_114] ≥ 0)



    We simplified constraint (153) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (154)    (i696[2] ≥ 0∧i696[2] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧[(-1)bni_113] = 0∧0 = 0∧[(-1)bni_113 + (-1)Bound*bni_113] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_114] ≥ 0)



  • We consider the chain LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2]), COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], -(i696[3], 1)), LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2]) which results in the following constraint:

    (155)    (i5[2]=i5[3]i7[2]=i7[3]i696[2]=i696[3]>(i696[2], 0)=TRUEi7[3]=i7[2]1-(i696[3], 1)=i696[2]1i5[3]=i5[2]1COND_LOAD1100(TRUE, i5[3], i7[3], i696[3])≥NonInfC∧COND_LOAD1100(TRUE, i5[3], i7[3], i696[3])≥LOAD1100(i5[3], i7[3], -(i696[3], 1))∧(UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥))



    We simplified constraint (155) using rules (III), (IV) which results in the following new constraint:

    (156)    (>(i696[2], 0)=TRUECOND_LOAD1100(TRUE, i5[2], i7[2], i696[2])≥NonInfC∧COND_LOAD1100(TRUE, i5[2], i7[2], i696[2])≥LOAD1100(i5[2], i7[2], -(i696[2], 1))∧(UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥))



    We simplified constraint (156) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (157)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧[(-1)bni_113 + (-1)Bound*bni_113] + [(-1)bni_113]i7[2] ≥ 0∧[(-1)bso_114] ≥ 0)



    We simplified constraint (157) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (158)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧[(-1)bni_113 + (-1)Bound*bni_113] + [(-1)bni_113]i7[2] ≥ 0∧[(-1)bso_114] ≥ 0)



    We simplified constraint (158) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (159)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧[(-1)bni_113 + (-1)Bound*bni_113] + [(-1)bni_113]i7[2] ≥ 0∧[(-1)bso_114] ≥ 0)



    We simplified constraint (159) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (160)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧[(-1)bni_113] = 0∧0 = 0∧[(-1)bni_113 + (-1)Bound*bni_113] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_114] ≥ 0)



    We simplified constraint (160) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (161)    (i696[2] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧[(-1)bni_113] = 0∧0 = 0∧[(-1)bni_113 + (-1)Bound*bni_113] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_114] ≥ 0)







For Pair LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2]) the following chains were created:
  • We consider the chain LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2]), COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], -(i696[3], 1)) which results in the following constraint:

    (162)    (i5[2]=i5[3]i7[2]=i7[3]i696[2]=i696[3]>(i696[2], 0)=TRUELOAD1100(i5[2], i7[2], i696[2])≥NonInfC∧LOAD1100(i5[2], i7[2], i696[2])≥COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])∧(UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥))



    We simplified constraint (162) using rule (IV) which results in the following new constraint:

    (163)    (>(i696[2], 0)=TRUELOAD1100(i5[2], i7[2], i696[2])≥NonInfC∧LOAD1100(i5[2], i7[2], i696[2])≥COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])∧(UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥))



    We simplified constraint (163) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (164)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥)∧[(-1)bni_115 + (-1)Bound*bni_115] + [(-1)bni_115]i7[2] ≥ 0∧[(-1)bso_116] ≥ 0)



    We simplified constraint (164) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (165)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥)∧[(-1)bni_115 + (-1)Bound*bni_115] + [(-1)bni_115]i7[2] ≥ 0∧[(-1)bso_116] ≥ 0)



    We simplified constraint (165) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (166)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥)∧[(-1)bni_115 + (-1)Bound*bni_115] + [(-1)bni_115]i7[2] ≥ 0∧[(-1)bso_116] ≥ 0)



    We simplified constraint (166) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (167)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥)∧[(-1)bni_115] = 0∧0 = 0∧[(-1)bni_115 + (-1)Bound*bni_115] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_116] ≥ 0)



    We simplified constraint (167) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (168)    (i696[2] ≥ 0 ⇒ (UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥)∧[(-1)bni_115] = 0∧0 = 0∧[(-1)bni_115 + (-1)Bound*bni_115] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_116] ≥ 0)







For Pair LOAD949(i5[1], i7[1], 0) → LOAD1100(i5[1], i7[1], i7[1]) the following chains were created:
  • We consider the chain LOAD949(i5[1], i7[1], 0) → LOAD1100(i5[1], i7[1], i7[1]), LOAD1100(i5[0], i7[0], 0) → LOAD83(i5[0], +(i7[0], 1)) which results in the following constraint:

    (169)    (i7[1]=0i5[1]=i5[0]i7[1]=i7[0]LOAD949(i5[1], i7[1], 0)≥NonInfC∧LOAD949(i5[1], i7[1], 0)≥LOAD1100(i5[1], i7[1], i7[1])∧(UIncreasing(LOAD1100(i5[1], i7[1], i7[1])), ≥))



    We simplified constraint (169) using rules (III), (IV) which results in the following new constraint:

    (170)    (LOAD949(i5[1], 0, 0)≥NonInfC∧LOAD949(i5[1], 0, 0)≥LOAD1100(i5[1], 0, 0)∧(UIncreasing(LOAD1100(i5[1], i7[1], i7[1])), ≥))



    We simplified constraint (170) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (171)    ((UIncreasing(LOAD1100(i5[1], i7[1], i7[1])), ≥)∧[(-1)bso_118] ≥ 0)



    We simplified constraint (171) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (172)    ((UIncreasing(LOAD1100(i5[1], i7[1], i7[1])), ≥)∧[(-1)bso_118] ≥ 0)



    We simplified constraint (172) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (173)    ((UIncreasing(LOAD1100(i5[1], i7[1], i7[1])), ≥)∧[(-1)bso_118] ≥ 0)



    We simplified constraint (173) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (174)    ((UIncreasing(LOAD1100(i5[1], i7[1], i7[1])), ≥)∧0 = 0∧[(-1)bso_118] ≥ 0)



  • We consider the chain LOAD949(i5[1], i7[1], 0) → LOAD1100(i5[1], i7[1], i7[1]), LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2]) which results in the following constraint:

    (175)    (i5[1]=i5[2]i7[1]=i7[2]i7[1]=i696[2]LOAD949(i5[1], i7[1], 0)≥NonInfC∧LOAD949(i5[1], i7[1], 0)≥LOAD1100(i5[1], i7[1], i7[1])∧(UIncreasing(LOAD1100(i5[1], i7[1], i7[1])), ≥))



    We simplified constraint (175) using rule (IV) which results in the following new constraint:

    (176)    (LOAD949(i5[1], i7[1], 0)≥NonInfC∧LOAD949(i5[1], i7[1], 0)≥LOAD1100(i5[1], i7[1], i7[1])∧(UIncreasing(LOAD1100(i5[1], i7[1], i7[1])), ≥))



    We simplified constraint (176) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (177)    ((UIncreasing(LOAD1100(i5[1], i7[1], i7[1])), ≥)∧[(-1)bso_118] ≥ 0)



    We simplified constraint (177) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (178)    ((UIncreasing(LOAD1100(i5[1], i7[1], i7[1])), ≥)∧[(-1)bso_118] ≥ 0)



    We simplified constraint (178) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (179)    ((UIncreasing(LOAD1100(i5[1], i7[1], i7[1])), ≥)∧[(-1)bso_118] ≥ 0)



    We simplified constraint (179) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (180)    ((UIncreasing(LOAD1100(i5[1], i7[1], i7[1])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_118] ≥ 0)







For Pair LOAD768(i5[4], i7[4], 0) → LOAD949(i5[4], i7[4], i7[4]) the following chains were created:
  • We consider the chain LOAD768(i5[4], i7[4], 0) → LOAD949(i5[4], i7[4], i7[4]), LOAD949(i5[1], i7[1], 0) → LOAD1100(i5[1], i7[1], i7[1]) which results in the following constraint:

    (181)    (i5[4]=i5[1]i7[4]=0i7[4]=i7[1]LOAD768(i5[4], i7[4], 0)≥NonInfC∧LOAD768(i5[4], i7[4], 0)≥LOAD949(i5[4], i7[4], i7[4])∧(UIncreasing(LOAD949(i5[4], i7[4], i7[4])), ≥))



    We simplified constraint (181) using rules (III), (IV) which results in the following new constraint:

    (182)    (LOAD768(i5[4], 0, 0)≥NonInfC∧LOAD768(i5[4], 0, 0)≥LOAD949(i5[4], 0, 0)∧(UIncreasing(LOAD949(i5[4], i7[4], i7[4])), ≥))



    We simplified constraint (182) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (183)    ((UIncreasing(LOAD949(i5[4], i7[4], i7[4])), ≥)∧[(-1)bso_120] ≥ 0)



    We simplified constraint (183) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (184)    ((UIncreasing(LOAD949(i5[4], i7[4], i7[4])), ≥)∧[(-1)bso_120] ≥ 0)



    We simplified constraint (184) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (185)    ((UIncreasing(LOAD949(i5[4], i7[4], i7[4])), ≥)∧[(-1)bso_120] ≥ 0)



    We simplified constraint (185) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (186)    ((UIncreasing(LOAD949(i5[4], i7[4], i7[4])), ≥)∧0 = 0∧[(-1)bso_120] ≥ 0)



  • We consider the chain LOAD768(i5[4], i7[4], 0) → LOAD949(i5[4], i7[4], i7[4]), LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5]) which results in the following constraint:

    (187)    (i7[4]=i7[5]i7[4]=i605[5]i5[4]=i5[5]LOAD768(i5[4], i7[4], 0)≥NonInfC∧LOAD768(i5[4], i7[4], 0)≥LOAD949(i5[4], i7[4], i7[4])∧(UIncreasing(LOAD949(i5[4], i7[4], i7[4])), ≥))



    We simplified constraint (187) using rule (IV) which results in the following new constraint:

    (188)    (LOAD768(i5[4], i7[4], 0)≥NonInfC∧LOAD768(i5[4], i7[4], 0)≥LOAD949(i5[4], i7[4], i7[4])∧(UIncreasing(LOAD949(i5[4], i7[4], i7[4])), ≥))



    We simplified constraint (188) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (189)    ((UIncreasing(LOAD949(i5[4], i7[4], i7[4])), ≥)∧[(-1)bso_120] ≥ 0)



    We simplified constraint (189) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (190)    ((UIncreasing(LOAD949(i5[4], i7[4], i7[4])), ≥)∧[(-1)bso_120] ≥ 0)



    We simplified constraint (190) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (191)    ((UIncreasing(LOAD949(i5[4], i7[4], i7[4])), ≥)∧[(-1)bso_120] ≥ 0)



    We simplified constraint (191) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (192)    ((UIncreasing(LOAD949(i5[4], i7[4], i7[4])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_120] ≥ 0)







For Pair LOAD608(i5[7], i7[7], 0) → LOAD768(i5[7], i7[7], i7[7]) the following chains were created:
  • We consider the chain LOAD608(i5[7], i7[7], 0) → LOAD768(i5[7], i7[7], i7[7]), LOAD768(i5[4], i7[4], 0) → LOAD949(i5[4], i7[4], i7[4]) which results in the following constraint:

    (193)    (i7[7]=0i7[7]=i7[4]i5[7]=i5[4]LOAD608(i5[7], i7[7], 0)≥NonInfC∧LOAD608(i5[7], i7[7], 0)≥LOAD768(i5[7], i7[7], i7[7])∧(UIncreasing(LOAD768(i5[7], i7[7], i7[7])), ≥))



    We simplified constraint (193) using rules (III), (IV) which results in the following new constraint:

    (194)    (LOAD608(i5[7], 0, 0)≥NonInfC∧LOAD608(i5[7], 0, 0)≥LOAD768(i5[7], 0, 0)∧(UIncreasing(LOAD768(i5[7], i7[7], i7[7])), ≥))



    We simplified constraint (194) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (195)    ((UIncreasing(LOAD768(i5[7], i7[7], i7[7])), ≥)∧[(-1)bso_122] ≥ 0)



    We simplified constraint (195) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (196)    ((UIncreasing(LOAD768(i5[7], i7[7], i7[7])), ≥)∧[(-1)bso_122] ≥ 0)



    We simplified constraint (196) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (197)    ((UIncreasing(LOAD768(i5[7], i7[7], i7[7])), ≥)∧[(-1)bso_122] ≥ 0)



    We simplified constraint (197) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (198)    ((UIncreasing(LOAD768(i5[7], i7[7], i7[7])), ≥)∧0 = 0∧[(-1)bso_122] ≥ 0)



  • We consider the chain LOAD608(i5[7], i7[7], 0) → LOAD768(i5[7], i7[7], i7[7]), LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8]) which results in the following constraint:

    (199)    (i5[7]=i5[8]i7[7]=i436[8]i7[7]=i7[8]LOAD608(i5[7], i7[7], 0)≥NonInfC∧LOAD608(i5[7], i7[7], 0)≥LOAD768(i5[7], i7[7], i7[7])∧(UIncreasing(LOAD768(i5[7], i7[7], i7[7])), ≥))



    We simplified constraint (199) using rule (IV) which results in the following new constraint:

    (200)    (LOAD608(i5[7], i7[7], 0)≥NonInfC∧LOAD608(i5[7], i7[7], 0)≥LOAD768(i5[7], i7[7], i7[7])∧(UIncreasing(LOAD768(i5[7], i7[7], i7[7])), ≥))



    We simplified constraint (200) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (201)    ((UIncreasing(LOAD768(i5[7], i7[7], i7[7])), ≥)∧[(-1)bso_122] ≥ 0)



    We simplified constraint (201) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (202)    ((UIncreasing(LOAD768(i5[7], i7[7], i7[7])), ≥)∧[(-1)bso_122] ≥ 0)



    We simplified constraint (202) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (203)    ((UIncreasing(LOAD768(i5[7], i7[7], i7[7])), ≥)∧[(-1)bso_122] ≥ 0)



    We simplified constraint (203) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (204)    ((UIncreasing(LOAD768(i5[7], i7[7], i7[7])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_122] ≥ 0)







For Pair LOAD484(i5[10], i7[10], 0) → LOAD608(i5[10], i7[10], i7[10]) the following chains were created:
  • We consider the chain LOAD484(i5[10], i7[10], 0) → LOAD608(i5[10], i7[10], i7[10]), LOAD608(i5[7], i7[7], 0) → LOAD768(i5[7], i7[7], i7[7]) which results in the following constraint:

    (205)    (i5[10]=i5[7]i7[10]=i7[7]i7[10]=0LOAD484(i5[10], i7[10], 0)≥NonInfC∧LOAD484(i5[10], i7[10], 0)≥LOAD608(i5[10], i7[10], i7[10])∧(UIncreasing(LOAD608(i5[10], i7[10], i7[10])), ≥))



    We simplified constraint (205) using rules (III), (IV) which results in the following new constraint:

    (206)    (LOAD484(i5[10], 0, 0)≥NonInfC∧LOAD484(i5[10], 0, 0)≥LOAD608(i5[10], 0, 0)∧(UIncreasing(LOAD608(i5[10], i7[10], i7[10])), ≥))



    We simplified constraint (206) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (207)    ((UIncreasing(LOAD608(i5[10], i7[10], i7[10])), ≥)∧[(-1)bso_124] ≥ 0)



    We simplified constraint (207) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (208)    ((UIncreasing(LOAD608(i5[10], i7[10], i7[10])), ≥)∧[(-1)bso_124] ≥ 0)



    We simplified constraint (208) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (209)    ((UIncreasing(LOAD608(i5[10], i7[10], i7[10])), ≥)∧[(-1)bso_124] ≥ 0)



    We simplified constraint (209) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (210)    ((UIncreasing(LOAD608(i5[10], i7[10], i7[10])), ≥)∧0 = 0∧[(-1)bso_124] ≥ 0)



  • We consider the chain LOAD484(i5[10], i7[10], 0) → LOAD608(i5[10], i7[10], i7[10]), LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11]) which results in the following constraint:

    (211)    (i7[10]=i7[11]i5[10]=i5[11]i7[10]=i296[11]LOAD484(i5[10], i7[10], 0)≥NonInfC∧LOAD484(i5[10], i7[10], 0)≥LOAD608(i5[10], i7[10], i7[10])∧(UIncreasing(LOAD608(i5[10], i7[10], i7[10])), ≥))



    We simplified constraint (211) using rule (IV) which results in the following new constraint:

    (212)    (LOAD484(i5[10], i7[10], 0)≥NonInfC∧LOAD484(i5[10], i7[10], 0)≥LOAD608(i5[10], i7[10], i7[10])∧(UIncreasing(LOAD608(i5[10], i7[10], i7[10])), ≥))



    We simplified constraint (212) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (213)    ((UIncreasing(LOAD608(i5[10], i7[10], i7[10])), ≥)∧[(-1)bso_124] ≥ 0)



    We simplified constraint (213) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (214)    ((UIncreasing(LOAD608(i5[10], i7[10], i7[10])), ≥)∧[(-1)bso_124] ≥ 0)



    We simplified constraint (214) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (215)    ((UIncreasing(LOAD608(i5[10], i7[10], i7[10])), ≥)∧[(-1)bso_124] ≥ 0)



    We simplified constraint (215) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (216)    ((UIncreasing(LOAD608(i5[10], i7[10], i7[10])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_124] ≥ 0)







For Pair LOAD363(i5[13], i7[13], 0) → LOAD484(i5[13], i7[13], i7[13]) the following chains were created:
  • We consider the chain LOAD363(i5[13], i7[13], 0) → LOAD484(i5[13], i7[13], i7[13]), LOAD484(i5[10], i7[10], 0) → LOAD608(i5[10], i7[10], i7[10]) which results in the following constraint:

    (217)    (i5[13]=i5[10]i7[13]=0i7[13]=i7[10]LOAD363(i5[13], i7[13], 0)≥NonInfC∧LOAD363(i5[13], i7[13], 0)≥LOAD484(i5[13], i7[13], i7[13])∧(UIncreasing(LOAD484(i5[13], i7[13], i7[13])), ≥))



    We simplified constraint (217) using rules (III), (IV) which results in the following new constraint:

    (218)    (LOAD363(i5[13], 0, 0)≥NonInfC∧LOAD363(i5[13], 0, 0)≥LOAD484(i5[13], 0, 0)∧(UIncreasing(LOAD484(i5[13], i7[13], i7[13])), ≥))



    We simplified constraint (218) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (219)    ((UIncreasing(LOAD484(i5[13], i7[13], i7[13])), ≥)∧[(-1)bso_126] ≥ 0)



    We simplified constraint (219) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (220)    ((UIncreasing(LOAD484(i5[13], i7[13], i7[13])), ≥)∧[(-1)bso_126] ≥ 0)



    We simplified constraint (220) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (221)    ((UIncreasing(LOAD484(i5[13], i7[13], i7[13])), ≥)∧[(-1)bso_126] ≥ 0)



    We simplified constraint (221) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (222)    ((UIncreasing(LOAD484(i5[13], i7[13], i7[13])), ≥)∧0 = 0∧[(-1)bso_126] ≥ 0)



  • We consider the chain LOAD363(i5[13], i7[13], 0) → LOAD484(i5[13], i7[13], i7[13]), LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14]) which results in the following constraint:

    (223)    (i7[13]=i187[14]i5[13]=i5[14]i7[13]=i7[14]LOAD363(i5[13], i7[13], 0)≥NonInfC∧LOAD363(i5[13], i7[13], 0)≥LOAD484(i5[13], i7[13], i7[13])∧(UIncreasing(LOAD484(i5[13], i7[13], i7[13])), ≥))



    We simplified constraint (223) using rule (IV) which results in the following new constraint:

    (224)    (LOAD363(i5[13], i7[13], 0)≥NonInfC∧LOAD363(i5[13], i7[13], 0)≥LOAD484(i5[13], i7[13], i7[13])∧(UIncreasing(LOAD484(i5[13], i7[13], i7[13])), ≥))



    We simplified constraint (224) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (225)    ((UIncreasing(LOAD484(i5[13], i7[13], i7[13])), ≥)∧[(-1)bso_126] ≥ 0)



    We simplified constraint (225) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (226)    ((UIncreasing(LOAD484(i5[13], i7[13], i7[13])), ≥)∧[(-1)bso_126] ≥ 0)



    We simplified constraint (226) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (227)    ((UIncreasing(LOAD484(i5[13], i7[13], i7[13])), ≥)∧[(-1)bso_126] ≥ 0)



    We simplified constraint (227) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (228)    ((UIncreasing(LOAD484(i5[13], i7[13], i7[13])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_126] ≥ 0)







For Pair LOAD258(i5[16], i7[16], 0) → LOAD363(i5[16], i7[16], i7[16]) the following chains were created:
  • We consider the chain LOAD258(i5[16], i7[16], 0) → LOAD363(i5[16], i7[16], i7[16]), LOAD363(i5[13], i7[13], 0) → LOAD484(i5[13], i7[13], i7[13]) which results in the following constraint:

    (229)    (i7[16]=i7[13]i7[16]=0i5[16]=i5[13]LOAD258(i5[16], i7[16], 0)≥NonInfC∧LOAD258(i5[16], i7[16], 0)≥LOAD363(i5[16], i7[16], i7[16])∧(UIncreasing(LOAD363(i5[16], i7[16], i7[16])), ≥))



    We simplified constraint (229) using rules (III), (IV) which results in the following new constraint:

    (230)    (LOAD258(i5[16], 0, 0)≥NonInfC∧LOAD258(i5[16], 0, 0)≥LOAD363(i5[16], 0, 0)∧(UIncreasing(LOAD363(i5[16], i7[16], i7[16])), ≥))



    We simplified constraint (230) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (231)    ((UIncreasing(LOAD363(i5[16], i7[16], i7[16])), ≥)∧[(-1)bso_128] ≥ 0)



    We simplified constraint (231) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (232)    ((UIncreasing(LOAD363(i5[16], i7[16], i7[16])), ≥)∧[(-1)bso_128] ≥ 0)



    We simplified constraint (232) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (233)    ((UIncreasing(LOAD363(i5[16], i7[16], i7[16])), ≥)∧[(-1)bso_128] ≥ 0)



    We simplified constraint (233) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (234)    ((UIncreasing(LOAD363(i5[16], i7[16], i7[16])), ≥)∧0 = 0∧[(-1)bso_128] ≥ 0)



  • We consider the chain LOAD258(i5[16], i7[16], 0) → LOAD363(i5[16], i7[16], i7[16]), LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17]) which results in the following constraint:

    (235)    (i7[16]=i104[17]i5[16]=i5[17]i7[16]=i7[17]LOAD258(i5[16], i7[16], 0)≥NonInfC∧LOAD258(i5[16], i7[16], 0)≥LOAD363(i5[16], i7[16], i7[16])∧(UIncreasing(LOAD363(i5[16], i7[16], i7[16])), ≥))



    We simplified constraint (235) using rule (IV) which results in the following new constraint:

    (236)    (LOAD258(i5[16], i7[16], 0)≥NonInfC∧LOAD258(i5[16], i7[16], 0)≥LOAD363(i5[16], i7[16], i7[16])∧(UIncreasing(LOAD363(i5[16], i7[16], i7[16])), ≥))



    We simplified constraint (236) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (237)    ((UIncreasing(LOAD363(i5[16], i7[16], i7[16])), ≥)∧[(-1)bso_128] ≥ 0)



    We simplified constraint (237) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (238)    ((UIncreasing(LOAD363(i5[16], i7[16], i7[16])), ≥)∧[(-1)bso_128] ≥ 0)



    We simplified constraint (238) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (239)    ((UIncreasing(LOAD363(i5[16], i7[16], i7[16])), ≥)∧[(-1)bso_128] ≥ 0)



    We simplified constraint (239) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (240)    ((UIncreasing(LOAD363(i5[16], i7[16], i7[16])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_128] ≥ 0)







For Pair LOAD175(i5[19], i7[19], 0) → LOAD258(i5[19], i7[19], i7[19]) the following chains were created:
  • We consider the chain LOAD175(i5[19], i7[19], 0) → LOAD258(i5[19], i7[19], i7[19]), LOAD258(i5[16], i7[16], 0) → LOAD363(i5[16], i7[16], i7[16]) which results in the following constraint:

    (241)    (i7[19]=0i5[19]=i5[16]i7[19]=i7[16]LOAD175(i5[19], i7[19], 0)≥NonInfC∧LOAD175(i5[19], i7[19], 0)≥LOAD258(i5[19], i7[19], i7[19])∧(UIncreasing(LOAD258(i5[19], i7[19], i7[19])), ≥))



    We simplified constraint (241) using rules (III), (IV) which results in the following new constraint:

    (242)    (LOAD175(i5[19], 0, 0)≥NonInfC∧LOAD175(i5[19], 0, 0)≥LOAD258(i5[19], 0, 0)∧(UIncreasing(LOAD258(i5[19], i7[19], i7[19])), ≥))



    We simplified constraint (242) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (243)    ((UIncreasing(LOAD258(i5[19], i7[19], i7[19])), ≥)∧[(-1)bso_130] ≥ 0)



    We simplified constraint (243) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (244)    ((UIncreasing(LOAD258(i5[19], i7[19], i7[19])), ≥)∧[(-1)bso_130] ≥ 0)



    We simplified constraint (244) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (245)    ((UIncreasing(LOAD258(i5[19], i7[19], i7[19])), ≥)∧[(-1)bso_130] ≥ 0)



    We simplified constraint (245) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (246)    ((UIncreasing(LOAD258(i5[19], i7[19], i7[19])), ≥)∧0 = 0∧[(-1)bso_130] ≥ 0)



  • We consider the chain LOAD175(i5[19], i7[19], 0) → LOAD258(i5[19], i7[19], i7[19]), LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20]) which results in the following constraint:

    (247)    (i7[19]=i49[20]i7[19]=i7[20]i5[19]=i5[20]LOAD175(i5[19], i7[19], 0)≥NonInfC∧LOAD175(i5[19], i7[19], 0)≥LOAD258(i5[19], i7[19], i7[19])∧(UIncreasing(LOAD258(i5[19], i7[19], i7[19])), ≥))



    We simplified constraint (247) using rule (IV) which results in the following new constraint:

    (248)    (LOAD175(i5[19], i7[19], 0)≥NonInfC∧LOAD175(i5[19], i7[19], 0)≥LOAD258(i5[19], i7[19], i7[19])∧(UIncreasing(LOAD258(i5[19], i7[19], i7[19])), ≥))



    We simplified constraint (248) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (249)    ((UIncreasing(LOAD258(i5[19], i7[19], i7[19])), ≥)∧[(-1)bso_130] ≥ 0)



    We simplified constraint (249) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (250)    ((UIncreasing(LOAD258(i5[19], i7[19], i7[19])), ≥)∧[(-1)bso_130] ≥ 0)



    We simplified constraint (250) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (251)    ((UIncreasing(LOAD258(i5[19], i7[19], i7[19])), ≥)∧[(-1)bso_130] ≥ 0)



    We simplified constraint (251) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (252)    ((UIncreasing(LOAD258(i5[19], i7[19], i7[19])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_130] ≥ 0)







For Pair COND_LOAD83(TRUE, i5[23], i7[23]) → LOAD175(i5[23], i7[23], i7[23]) the following chains were created:
  • We consider the chain COND_LOAD83(TRUE, i5[23], i7[23]) → LOAD175(i5[23], i7[23], i7[23]), LOAD175(i5[19], i7[19], 0) → LOAD258(i5[19], i7[19], i7[19]) which results in the following constraint:

    (253)    (i5[23]=i5[19]i7[23]=i7[19]i7[23]=0COND_LOAD83(TRUE, i5[23], i7[23])≥NonInfC∧COND_LOAD83(TRUE, i5[23], i7[23])≥LOAD175(i5[23], i7[23], i7[23])∧(UIncreasing(LOAD175(i5[23], i7[23], i7[23])), ≥))



    We simplified constraint (253) using rules (III), (IV) which results in the following new constraint:

    (254)    (COND_LOAD83(TRUE, i5[23], 0)≥NonInfC∧COND_LOAD83(TRUE, i5[23], 0)≥LOAD175(i5[23], 0, 0)∧(UIncreasing(LOAD175(i5[23], i7[23], i7[23])), ≥))



    We simplified constraint (254) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (255)    ((UIncreasing(LOAD175(i5[23], i7[23], i7[23])), ≥)∧[(-1)bso_132] ≥ 0)



    We simplified constraint (255) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (256)    ((UIncreasing(LOAD175(i5[23], i7[23], i7[23])), ≥)∧[(-1)bso_132] ≥ 0)



    We simplified constraint (256) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (257)    ((UIncreasing(LOAD175(i5[23], i7[23], i7[23])), ≥)∧[(-1)bso_132] ≥ 0)



    We simplified constraint (257) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (258)    ((UIncreasing(LOAD175(i5[23], i7[23], i7[23])), ≥)∧0 = 0∧[(-1)bso_132] ≥ 0)



  • We consider the chain COND_LOAD83(TRUE, i5[23], i7[23]) → LOAD175(i5[23], i7[23], i7[23]), LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26]) which results in the following constraint:

    (259)    (i7[23]=i7[26]i5[23]=i5[26]i7[23]=i20[26]COND_LOAD83(TRUE, i5[23], i7[23])≥NonInfC∧COND_LOAD83(TRUE, i5[23], i7[23])≥LOAD175(i5[23], i7[23], i7[23])∧(UIncreasing(LOAD175(i5[23], i7[23], i7[23])), ≥))



    We simplified constraint (259) using rule (IV) which results in the following new constraint:

    (260)    (COND_LOAD83(TRUE, i5[23], i7[23])≥NonInfC∧COND_LOAD83(TRUE, i5[23], i7[23])≥LOAD175(i5[23], i7[23], i7[23])∧(UIncreasing(LOAD175(i5[23], i7[23], i7[23])), ≥))



    We simplified constraint (260) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (261)    ((UIncreasing(LOAD175(i5[23], i7[23], i7[23])), ≥)∧[(-1)bso_132] ≥ 0)



    We simplified constraint (261) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (262)    ((UIncreasing(LOAD175(i5[23], i7[23], i7[23])), ≥)∧[(-1)bso_132] ≥ 0)



    We simplified constraint (262) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (263)    ((UIncreasing(LOAD175(i5[23], i7[23], i7[23])), ≥)∧[(-1)bso_132] ≥ 0)



    We simplified constraint (263) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (264)    ((UIncreasing(LOAD175(i5[23], i7[23], i7[23])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_132] ≥ 0)







For Pair LOAD83(i5[22], i7[22]) → COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22]) the following chains were created:
  • We consider the chain LOAD83(i5[22], i7[22]) → COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22]), COND_LOAD83(TRUE, i5[23], i7[23]) → LOAD175(i5[23], i7[23], i7[23]) which results in the following constraint:

    (265)    (i5[22]=i5[23]&&(>(i7[22], 0), <(i7[22], 100))=TRUEi7[22]=i7[23]LOAD83(i5[22], i7[22])≥NonInfC∧LOAD83(i5[22], i7[22])≥COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22])∧(UIncreasing(COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22])), ≥))



    We simplified constraint (265) using rules (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (266)    (>(i7[22], 0)=TRUE<(i7[22], 100)=TRUELOAD83(i5[22], i7[22])≥NonInfC∧LOAD83(i5[22], i7[22])≥COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22])∧(UIncreasing(COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22])), ≥))



    We simplified constraint (266) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (267)    (i7[22] + [-1] ≥ 0∧[99] + [-1]i7[22] ≥ 0 ⇒ (UIncreasing(COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22])), ≥)∧[(-1)bni_133 + (-1)Bound*bni_133] + [(-1)bni_133]i7[22] ≥ 0∧[(-1)bso_134] ≥ 0)



    We simplified constraint (267) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (268)    (i7[22] + [-1] ≥ 0∧[99] + [-1]i7[22] ≥ 0 ⇒ (UIncreasing(COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22])), ≥)∧[(-1)bni_133 + (-1)Bound*bni_133] + [(-1)bni_133]i7[22] ≥ 0∧[(-1)bso_134] ≥ 0)



    We simplified constraint (268) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (269)    (i7[22] + [-1] ≥ 0∧[99] + [-1]i7[22] ≥ 0 ⇒ (UIncreasing(COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22])), ≥)∧[(-1)bni_133 + (-1)Bound*bni_133] + [(-1)bni_133]i7[22] ≥ 0∧[(-1)bso_134] ≥ 0)



    We simplified constraint (269) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (270)    (i7[22] + [-1] ≥ 0∧[99] + [-1]i7[22] ≥ 0 ⇒ (UIncreasing(COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22])), ≥)∧0 = 0∧[(-1)bni_133 + (-1)Bound*bni_133] + [(-1)bni_133]i7[22] ≥ 0∧0 = 0∧[(-1)bso_134] ≥ 0)



    We simplified constraint (270) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (271)    (i7[22] ≥ 0∧[98] + [-1]i7[22] ≥ 0 ⇒ (UIncreasing(COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22])), ≥)∧0 = 0∧[(-2)bni_133 + (-1)Bound*bni_133] + [(-1)bni_133]i7[22] ≥ 0∧0 = 0∧[(-1)bso_134] ≥ 0)







For Pair LOAD1100(i5[0], i7[0], 0) → LOAD83(i5[0], +(i7[0], 1)) the following chains were created:
  • We consider the chain LOAD949(i5[1], i7[1], 0) → LOAD1100(i5[1], i7[1], i7[1]), LOAD1100(i5[0], i7[0], 0) → LOAD83(i5[0], +(i7[0], 1)), LOAD83(i5[22], i7[22]) → COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22]) which results in the following constraint:

    (272)    (i7[1]=0i5[1]=i5[0]i7[1]=i7[0]i5[0]=i5[22]+(i7[0], 1)=i7[22]LOAD1100(i5[0], i7[0], 0)≥NonInfC∧LOAD1100(i5[0], i7[0], 0)≥LOAD83(i5[0], +(i7[0], 1))∧(UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥))



    We simplified constraint (272) using rules (III), (IV) which results in the following new constraint:

    (273)    (LOAD1100(i5[1], 0, 0)≥NonInfC∧LOAD1100(i5[1], 0, 0)≥LOAD83(i5[1], +(0, 1))∧(UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥))



    We simplified constraint (273) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (274)    ((UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥)∧[1 + (-1)bso_136] ≥ 0)



    We simplified constraint (274) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (275)    ((UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥)∧[1 + (-1)bso_136] ≥ 0)



    We simplified constraint (275) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (276)    ((UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥)∧[1 + (-1)bso_136] ≥ 0)



    We simplified constraint (276) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (277)    ((UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥)∧0 = 0∧[1 + (-1)bso_136] ≥ 0)



  • We consider the chain COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], -(i696[3], 1)), LOAD1100(i5[0], i7[0], 0) → LOAD83(i5[0], +(i7[0], 1)), LOAD83(i5[22], i7[22]) → COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22]) which results in the following constraint:

    (278)    (i7[3]=i7[0]i5[3]=i5[0]-(i696[3], 1)=0i5[0]=i5[22]+(i7[0], 1)=i7[22]LOAD1100(i5[0], i7[0], 0)≥NonInfC∧LOAD1100(i5[0], i7[0], 0)≥LOAD83(i5[0], +(i7[0], 1))∧(UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥))



    We simplified constraint (278) using rules (III), (IV) which results in the following new constraint:

    (279)    (-(i696[3], 1)=0LOAD1100(i5[3], i7[3], 0)≥NonInfC∧LOAD1100(i5[3], i7[3], 0)≥LOAD83(i5[3], +(i7[3], 1))∧(UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥))



    We simplified constraint (279) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (280)    (i696[3] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥)∧0 ≥ 0∧[1 + (-1)bso_136] ≥ 0)



    We simplified constraint (280) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (281)    (i696[3] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥)∧0 ≥ 0∧[1 + (-1)bso_136] ≥ 0)



    We simplified constraint (281) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (282)    (i696[3] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥)∧0 ≥ 0∧[1 + (-1)bso_136] ≥ 0)



    We simplified constraint (282) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (283)    (i696[3] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥)∧0 = 0∧0 = 0∧0 ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_136] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], -(i20[27], 1))
    • (i20[26] ≥ 0∧i20[26] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧[(-1)bni_85] = 0∧0 = 0∧[(-1)bni_85 + (-1)Bound*bni_85] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_86] ≥ 0)
    • (i20[26] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧[(-1)bni_85] = 0∧0 = 0∧[(-1)bni_85 + (-1)Bound*bni_85] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_86] ≥ 0)

  • LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])
    • (i20[26] ≥ 0 ⇒ (UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥)∧[(-1)bni_87] = 0∧0 = 0∧[(-1)bni_87 + (-1)Bound*bni_87] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_88] ≥ 0)

  • COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], -(i49[21], 1))
    • (i49[20] ≥ 0∧i49[20] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧[(-1)bni_89] = 0∧0 = 0∧[(-1)bni_89 + (-1)Bound*bni_89] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_90] ≥ 0)
    • (i49[20] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧[(-1)bni_89] = 0∧0 = 0∧[(-1)bni_89 + (-1)Bound*bni_89] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_90] ≥ 0)

  • LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])
    • (i49[20] ≥ 0 ⇒ (UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥)∧[(-1)bni_91] = 0∧0 = 0∧[(-1)bni_91 + (-1)Bound*bni_91] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_92] ≥ 0)

  • COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], -(i104[18], 1))
    • (i104[17] ≥ 0∧i104[17] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧[(-1)bni_93] = 0∧0 = 0∧[(-1)bni_93 + (-1)Bound*bni_93] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_94] ≥ 0)
    • (i104[17] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧[(-1)bni_93] = 0∧0 = 0∧[(-1)bni_93 + (-1)Bound*bni_93] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_94] ≥ 0)

  • LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])
    • (i104[17] ≥ 0 ⇒ (UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥)∧[(-1)bni_95] = 0∧0 = 0∧[(-1)bni_95 + (-1)Bound*bni_95] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_96] ≥ 0)

  • COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], -(i187[15], 1))
    • (i187[14] ≥ 0∧i187[14] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧[(-1)bni_97] = 0∧0 = 0∧[(-1)bni_97 + (-1)Bound*bni_97] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_98] ≥ 0)
    • (i187[14] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧[(-1)bni_97] = 0∧0 = 0∧[(-1)bni_97 + (-1)Bound*bni_97] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_98] ≥ 0)

  • LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])
    • (i187[14] ≥ 0 ⇒ (UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥)∧[(-1)bni_99] = 0∧0 = 0∧[(-1)bni_99 + (-1)Bound*bni_99] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_100] ≥ 0)

  • COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], -(i296[12], 1))
    • (i296[11] ≥ 0∧i296[11] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧[(-1)bni_101] = 0∧0 = 0∧[(-1)bni_101 + (-1)Bound*bni_101] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_102] ≥ 0)
    • (i296[11] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧[(-1)bni_101] = 0∧0 = 0∧[(-1)bni_101 + (-1)Bound*bni_101] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_102] ≥ 0)

  • LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])
    • (i296[11] ≥ 0 ⇒ (UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥)∧[(-1)bni_103] = 0∧0 = 0∧[(-1)bni_103 + (-1)Bound*bni_103] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_104] ≥ 0)

  • COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], -(i436[9], 1))
    • (i436[8] ≥ 0∧i436[8] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧[(-1)bni_105] = 0∧0 = 0∧[(-1)bni_105 + (-1)Bound*bni_105] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_106] ≥ 0)
    • (i436[8] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧[(-1)bni_105] = 0∧0 = 0∧[(-1)bni_105 + (-1)Bound*bni_105] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_106] ≥ 0)

  • LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])
    • (i436[8] ≥ 0 ⇒ (UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥)∧[(-1)bni_107] = 0∧0 = 0∧[(-1)bni_107 + (-1)Bound*bni_107] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_108] ≥ 0)

  • COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], -(i605[6], 1))
    • (i605[5] ≥ 0∧i605[5] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧[(-1)bni_109] = 0∧0 = 0∧[(-1)bni_109 + (-1)Bound*bni_109] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_110] ≥ 0)
    • (i605[5] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧[(-1)bni_109] = 0∧0 = 0∧[(-1)bni_109 + (-1)Bound*bni_109] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_110] ≥ 0)

  • LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])
    • (i605[5] ≥ 0 ⇒ (UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥)∧[(-1)bni_111] = 0∧0 = 0∧[(-1)bni_111 + (-1)Bound*bni_111] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_112] ≥ 0)

  • COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], -(i696[3], 1))
    • (i696[2] ≥ 0∧i696[2] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧[(-1)bni_113] = 0∧0 = 0∧[(-1)bni_113 + (-1)Bound*bni_113] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_114] ≥ 0)
    • (i696[2] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧[(-1)bni_113] = 0∧0 = 0∧[(-1)bni_113 + (-1)Bound*bni_113] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_114] ≥ 0)

  • LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])
    • (i696[2] ≥ 0 ⇒ (UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥)∧[(-1)bni_115] = 0∧0 = 0∧[(-1)bni_115 + (-1)Bound*bni_115] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_116] ≥ 0)

  • LOAD949(i5[1], i7[1], 0) → LOAD1100(i5[1], i7[1], i7[1])
    • ((UIncreasing(LOAD1100(i5[1], i7[1], i7[1])), ≥)∧0 = 0∧[(-1)bso_118] ≥ 0)
    • ((UIncreasing(LOAD1100(i5[1], i7[1], i7[1])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_118] ≥ 0)

  • LOAD768(i5[4], i7[4], 0) → LOAD949(i5[4], i7[4], i7[4])
    • ((UIncreasing(LOAD949(i5[4], i7[4], i7[4])), ≥)∧0 = 0∧[(-1)bso_120] ≥ 0)
    • ((UIncreasing(LOAD949(i5[4], i7[4], i7[4])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_120] ≥ 0)

  • LOAD608(i5[7], i7[7], 0) → LOAD768(i5[7], i7[7], i7[7])
    • ((UIncreasing(LOAD768(i5[7], i7[7], i7[7])), ≥)∧0 = 0∧[(-1)bso_122] ≥ 0)
    • ((UIncreasing(LOAD768(i5[7], i7[7], i7[7])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_122] ≥ 0)

  • LOAD484(i5[10], i7[10], 0) → LOAD608(i5[10], i7[10], i7[10])
    • ((UIncreasing(LOAD608(i5[10], i7[10], i7[10])), ≥)∧0 = 0∧[(-1)bso_124] ≥ 0)
    • ((UIncreasing(LOAD608(i5[10], i7[10], i7[10])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_124] ≥ 0)

  • LOAD363(i5[13], i7[13], 0) → LOAD484(i5[13], i7[13], i7[13])
    • ((UIncreasing(LOAD484(i5[13], i7[13], i7[13])), ≥)∧0 = 0∧[(-1)bso_126] ≥ 0)
    • ((UIncreasing(LOAD484(i5[13], i7[13], i7[13])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_126] ≥ 0)

  • LOAD258(i5[16], i7[16], 0) → LOAD363(i5[16], i7[16], i7[16])
    • ((UIncreasing(LOAD363(i5[16], i7[16], i7[16])), ≥)∧0 = 0∧[(-1)bso_128] ≥ 0)
    • ((UIncreasing(LOAD363(i5[16], i7[16], i7[16])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_128] ≥ 0)

  • LOAD175(i5[19], i7[19], 0) → LOAD258(i5[19], i7[19], i7[19])
    • ((UIncreasing(LOAD258(i5[19], i7[19], i7[19])), ≥)∧0 = 0∧[(-1)bso_130] ≥ 0)
    • ((UIncreasing(LOAD258(i5[19], i7[19], i7[19])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_130] ≥ 0)

  • COND_LOAD83(TRUE, i5[23], i7[23]) → LOAD175(i5[23], i7[23], i7[23])
    • ((UIncreasing(LOAD175(i5[23], i7[23], i7[23])), ≥)∧0 = 0∧[(-1)bso_132] ≥ 0)
    • ((UIncreasing(LOAD175(i5[23], i7[23], i7[23])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_132] ≥ 0)

  • LOAD83(i5[22], i7[22]) → COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22])
    • (i7[22] ≥ 0∧[98] + [-1]i7[22] ≥ 0 ⇒ (UIncreasing(COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22])), ≥)∧0 = 0∧[(-2)bni_133 + (-1)Bound*bni_133] + [(-1)bni_133]i7[22] ≥ 0∧0 = 0∧[(-1)bso_134] ≥ 0)

  • LOAD1100(i5[0], i7[0], 0) → LOAD83(i5[0], +(i7[0], 1))
    • ((UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥)∧0 = 0∧[1 + (-1)bso_136] ≥ 0)
    • (i696[3] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥)∧0 = 0∧0 = 0∧0 ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_136] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = [3]   
POL(FALSE) = 0   
POL(COND_LOAD175(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(LOAD175(x1, x2, x3)) = [-1] + [-1]x2   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(1) = [1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   
POL(COND_LOAD258(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(LOAD258(x1, x2, x3)) = [-1] + [-1]x2   
POL(COND_LOAD363(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(LOAD363(x1, x2, x3)) = [-1] + [-1]x2   
POL(COND_LOAD484(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(LOAD484(x1, x2, x3)) = [-1] + [-1]x2   
POL(COND_LOAD608(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(LOAD608(x1, x2, x3)) = [-1] + [-1]x2   
POL(COND_LOAD768(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(LOAD768(x1, x2, x3)) = [-1] + [-1]x2   
POL(COND_LOAD949(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(LOAD949(x1, x2, x3)) = [-1] + [-1]x2   
POL(COND_LOAD1100(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(LOAD1100(x1, x2, x3)) = [-1] + [-1]x2   
POL(COND_LOAD83(x1, x2, x3)) = [-1] + [-1]x3   
POL(LOAD83(x1, x2)) = [-1] + [-1]x2   
POL(&&(x1, x2)) = [-1]   
POL(<(x1, x2)) = [-1]   
POL(100) = [100]   
POL(+(x1, x2)) = x1 + x2   

The following pairs are in P>:

LOAD1100(i5[0], i7[0], 0) → LOAD83(i5[0], +(i7[0], 1))

The following pairs are in Pbound:

LOAD83(i5[22], i7[22]) → COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22])

The following pairs are in P:

COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], -(i20[27], 1))
LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])
COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], -(i49[21], 1))
LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])
COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], -(i104[18], 1))
LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])
COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], -(i187[15], 1))
LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])
COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], -(i296[12], 1))
LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])
COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], -(i436[9], 1))
LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])
COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], -(i605[6], 1))
LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])
COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], -(i696[3], 1))
LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])
LOAD949(i5[1], i7[1], 0) → LOAD1100(i5[1], i7[1], i7[1])
LOAD768(i5[4], i7[4], 0) → LOAD949(i5[4], i7[4], i7[4])
LOAD608(i5[7], i7[7], 0) → LOAD768(i5[7], i7[7], i7[7])
LOAD484(i5[10], i7[10], 0) → LOAD608(i5[10], i7[10], i7[10])
LOAD363(i5[13], i7[13], 0) → LOAD484(i5[13], i7[13], i7[13])
LOAD258(i5[16], i7[16], 0) → LOAD363(i5[16], i7[16], i7[16])
LOAD175(i5[19], i7[19], 0) → LOAD258(i5[19], i7[19], i7[19])
COND_LOAD83(TRUE, i5[23], i7[23]) → LOAD175(i5[23], i7[23], i7[23])
LOAD83(i5[22], i7[22]) → COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22])

At least the following rules have been oriented under context sensitive arithmetic replacement:

TRUE1&&(TRUE, TRUE)1
FALSE1&&(TRUE, FALSE)1

(17) Complex Obligation (AND)

(18) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


R is empty.

The integer pair graph contains the following rules and edges:
(27): COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], i20[27] - 1)
(26): LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(i20[26] > 0, i5[26], i7[26], i20[26])
(21): COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], i49[21] - 1)
(20): LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(i49[20] > 0, i5[20], i7[20], i49[20])
(18): COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], i104[18] - 1)
(17): LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(i104[17] > 0, i5[17], i7[17], i104[17])
(15): COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], i187[15] - 1)
(14): LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(i187[14] > 0, i5[14], i7[14], i187[14])
(12): COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], i296[12] - 1)
(11): LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(i296[11] > 0, i5[11], i7[11], i296[11])
(9): COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], i436[9] - 1)
(8): LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(i436[8] > 0, i5[8], i7[8], i436[8])
(6): COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], i605[6] - 1)
(5): LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(i605[5] > 0, i5[5], i7[5], i605[5])
(3): COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], i696[3] - 1)
(2): LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(i696[2] > 0, i5[2], i7[2], i696[2])
(1): LOAD949(i5[1], i7[1], 0) → LOAD1100(i5[1], i7[1], i7[1])
(4): LOAD768(i5[4], i7[4], 0) → LOAD949(i5[4], i7[4], i7[4])
(7): LOAD608(i5[7], i7[7], 0) → LOAD768(i5[7], i7[7], i7[7])
(10): LOAD484(i5[10], i7[10], 0) → LOAD608(i5[10], i7[10], i7[10])
(13): LOAD363(i5[13], i7[13], 0) → LOAD484(i5[13], i7[13], i7[13])
(16): LOAD258(i5[16], i7[16], 0) → LOAD363(i5[16], i7[16], i7[16])
(19): LOAD175(i5[19], i7[19], 0) → LOAD258(i5[19], i7[19], i7[19])
(23): COND_LOAD83(TRUE, i5[23], i7[23]) → LOAD175(i5[23], i7[23], i7[23])
(22): LOAD83(i5[22], i7[22]) → COND_LOAD83(i7[22] > 0 && i7[22] < 100, i5[22], i7[22])

(4) -> (1), if ((i5[4]* i5[1])∧(i7[4]* 0)∧(i7[4]* i7[1]))


(6) -> (1), if ((i605[6] - 1* 0)∧(i5[6]* i5[1])∧(i7[6]* i7[1]))


(1) -> (2), if ((i5[1]* i5[2])∧(i7[1]* i7[2])∧(i7[1]* i696[2]))


(3) -> (2), if ((i7[3]* i7[2])∧(i696[3] - 1* i696[2])∧(i5[3]* i5[2]))


(2) -> (3), if ((i5[2]* i5[3])∧(i7[2]* i7[3])∧(i696[2]* i696[3])∧(i696[2] > 0* TRUE))


(7) -> (4), if ((i7[7]* 0)∧(i7[7]* i7[4])∧(i5[7]* i5[4]))


(9) -> (4), if ((i7[9]* i7[4])∧(i436[9] - 1* 0)∧(i5[9]* i5[4]))


(4) -> (5), if ((i7[4]* i7[5])∧(i7[4]* i605[5])∧(i5[4]* i5[5]))


(6) -> (5), if ((i7[6]* i7[5])∧(i605[6] - 1* i605[5])∧(i5[6]* i5[5]))


(5) -> (6), if ((i5[5]* i5[6])∧(i7[5]* i7[6])∧(i605[5]* i605[6])∧(i605[5] > 0* TRUE))


(10) -> (7), if ((i5[10]* i5[7])∧(i7[10]* i7[7])∧(i7[10]* 0))


(12) -> (7), if ((i296[12] - 1* 0)∧(i7[12]* i7[7])∧(i5[12]* i5[7]))


(7) -> (8), if ((i5[7]* i5[8])∧(i7[7]* i436[8])∧(i7[7]* i7[8]))


(9) -> (8), if ((i436[9] - 1* i436[8])∧(i7[9]* i7[8])∧(i5[9]* i5[8]))


(8) -> (9), if ((i7[8]* i7[9])∧(i436[8]* i436[9])∧(i5[8]* i5[9])∧(i436[8] > 0* TRUE))


(13) -> (10), if ((i5[13]* i5[10])∧(i7[13]* 0)∧(i7[13]* i7[10]))


(15) -> (10), if ((i7[15]* i7[10])∧(i187[15] - 1* 0)∧(i5[15]* i5[10]))


(10) -> (11), if ((i7[10]* i7[11])∧(i5[10]* i5[11])∧(i7[10]* i296[11]))


(12) -> (11), if ((i296[12] - 1* i296[11])∧(i5[12]* i5[11])∧(i7[12]* i7[11]))


(11) -> (12), if ((i296[11] > 0* TRUE)∧(i7[11]* i7[12])∧(i296[11]* i296[12])∧(i5[11]* i5[12]))


(16) -> (13), if ((i7[16]* i7[13])∧(i7[16]* 0)∧(i5[16]* i5[13]))


(18) -> (13), if ((i5[18]* i5[13])∧(i104[18] - 1* 0)∧(i7[18]* i7[13]))


(13) -> (14), if ((i7[13]* i187[14])∧(i5[13]* i5[14])∧(i7[13]* i7[14]))


(15) -> (14), if ((i187[15] - 1* i187[14])∧(i5[15]* i5[14])∧(i7[15]* i7[14]))


(14) -> (15), if ((i7[14]* i7[15])∧(i5[14]* i5[15])∧(i187[14]* i187[15])∧(i187[14] > 0* TRUE))


(19) -> (16), if ((i7[19]* 0)∧(i5[19]* i5[16])∧(i7[19]* i7[16]))


(21) -> (16), if ((i7[21]* i7[16])∧(i49[21] - 1* 0)∧(i5[21]* i5[16]))


(16) -> (17), if ((i7[16]* i104[17])∧(i5[16]* i5[17])∧(i7[16]* i7[17]))


(18) -> (17), if ((i104[18] - 1* i104[17])∧(i5[18]* i5[17])∧(i7[18]* i7[17]))


(17) -> (18), if ((i7[17]* i7[18])∧(i5[17]* i5[18])∧(i104[17]* i104[18])∧(i104[17] > 0* TRUE))


(23) -> (19), if ((i5[23]* i5[19])∧(i7[23]* i7[19])∧(i7[23]* 0))


(27) -> (19), if ((i7[27]* i7[19])∧(i5[27]* i5[19])∧(i20[27] - 1* 0))


(19) -> (20), if ((i7[19]* i49[20])∧(i7[19]* i7[20])∧(i5[19]* i5[20]))


(21) -> (20), if ((i7[21]* i7[20])∧(i49[21] - 1* i49[20])∧(i5[21]* i5[20]))


(20) -> (21), if ((i7[20]* i7[21])∧(i49[20] > 0* TRUE)∧(i5[20]* i5[21])∧(i49[20]* i49[21]))


(22) -> (23), if ((i5[22]* i5[23])∧(i7[22] > 0 && i7[22] < 100* TRUE)∧(i7[22]* i7[23]))


(23) -> (26), if ((i7[23]* i7[26])∧(i5[23]* i5[26])∧(i7[23]* i20[26]))


(27) -> (26), if ((i20[27] - 1* i20[26])∧(i7[27]* i7[26])∧(i5[27]* i5[26]))


(26) -> (27), if ((i20[26] > 0* TRUE)∧(i7[26]* i7[27])∧(i20[26]* i20[27])∧(i5[26]* i5[27]))



The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(19) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 8 SCCs with 9 less nodes.

(20) Complex Obligation (AND)

(21) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(3): COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], i696[3] - 1)
(2): LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(i696[2] > 0, i5[2], i7[2], i696[2])

(3) -> (2), if ((i7[3]* i7[2])∧(i696[3] - 1* i696[2])∧(i5[3]* i5[2]))


(2) -> (3), if ((i5[2]* i5[3])∧(i7[2]* i7[3])∧(i696[2]* i696[3])∧(i696[2] > 0* TRUE))



The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(22) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], -(i696[3], 1)) the following chains were created:
  • We consider the chain LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2]), COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], -(i696[3], 1)), LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2]) which results in the following constraint:

    (1)    (i5[2]=i5[3]i7[2]=i7[3]i696[2]=i696[3]>(i696[2], 0)=TRUEi7[3]=i7[2]1-(i696[3], 1)=i696[2]1i5[3]=i5[2]1COND_LOAD1100(TRUE, i5[3], i7[3], i696[3])≥NonInfC∧COND_LOAD1100(TRUE, i5[3], i7[3], i696[3])≥LOAD1100(i5[3], i7[3], -(i696[3], 1))∧(UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i696[2], 0)=TRUECOND_LOAD1100(TRUE, i5[2], i7[2], i696[2])≥NonInfC∧COND_LOAD1100(TRUE, i5[2], i7[2], i696[2])≥LOAD1100(i5[2], i7[2], -(i696[2], 1))∧(UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i696[2] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i696[2] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i696[2] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i696[2] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i696[2] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i696[2] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2]) the following chains were created:
  • We consider the chain LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2]), COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], -(i696[3], 1)) which results in the following constraint:

    (8)    (i5[2]=i5[3]i7[2]=i7[3]i696[2]=i696[3]>(i696[2], 0)=TRUELOAD1100(i5[2], i7[2], i696[2])≥NonInfC∧LOAD1100(i5[2], i7[2], i696[2])≥COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])∧(UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i696[2], 0)=TRUELOAD1100(i5[2], i7[2], i696[2])≥NonInfC∧LOAD1100(i5[2], i7[2], i696[2])≥COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])∧(UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i696[2] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i696[2] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i696[2] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i696[2] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i696[2] ≥ 0 ⇒ (UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i696[2] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], -(i696[3], 1))
    • (i696[2] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i696[2] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])
    • (i696[2] ≥ 0 ⇒ (UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i696[2] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(COND_LOAD1100(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD1100(x1, x2, x3)) = [-1] + x3   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(1) = [1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], -(i696[3], 1))

The following pairs are in Pbound:

COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], -(i696[3], 1))
LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])

The following pairs are in P:

LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])

There are no usable rules.

(23) Complex Obligation (AND)

(24) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(2): LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(i696[2] > 0, i5[2], i7[2], i696[2])


The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(25) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(26) TRUE

(27) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(28) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(29) TRUE

(30) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(6): COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], i605[6] - 1)
(5): LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(i605[5] > 0, i5[5], i7[5], i605[5])

(6) -> (5), if ((i7[6]* i7[5])∧(i605[6] - 1* i605[5])∧(i5[6]* i5[5]))


(5) -> (6), if ((i5[5]* i5[6])∧(i7[5]* i7[6])∧(i605[5]* i605[6])∧(i605[5] > 0* TRUE))



The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(31) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], -(i605[6], 1)) the following chains were created:
  • We consider the chain LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5]), COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], -(i605[6], 1)), LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5]) which results in the following constraint:

    (1)    (i5[5]=i5[6]i7[5]=i7[6]i605[5]=i605[6]>(i605[5], 0)=TRUEi7[6]=i7[5]1-(i605[6], 1)=i605[5]1i5[6]=i5[5]1COND_LOAD949(TRUE, i5[6], i7[6], i605[6])≥NonInfC∧COND_LOAD949(TRUE, i5[6], i7[6], i605[6])≥LOAD949(i5[6], i7[6], -(i605[6], 1))∧(UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i605[5], 0)=TRUECOND_LOAD949(TRUE, i5[5], i7[5], i605[5])≥NonInfC∧COND_LOAD949(TRUE, i5[5], i7[5], i605[5])≥LOAD949(i5[5], i7[5], -(i605[5], 1))∧(UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i605[5] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i605[5] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i605[5] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i605[5] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i605[5] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i605[5] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5]) the following chains were created:
  • We consider the chain LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5]), COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], -(i605[6], 1)) which results in the following constraint:

    (8)    (i5[5]=i5[6]i7[5]=i7[6]i605[5]=i605[6]>(i605[5], 0)=TRUELOAD949(i5[5], i7[5], i605[5])≥NonInfC∧LOAD949(i5[5], i7[5], i605[5])≥COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])∧(UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i605[5], 0)=TRUELOAD949(i5[5], i7[5], i605[5])≥NonInfC∧LOAD949(i5[5], i7[5], i605[5])≥COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])∧(UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i605[5] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i605[5] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i605[5] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i605[5] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i605[5] ≥ 0 ⇒ (UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i605[5] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], -(i605[6], 1))
    • (i605[5] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i605[5] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])
    • (i605[5] ≥ 0 ⇒ (UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i605[5] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(COND_LOAD949(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD949(x1, x2, x3)) = [-1] + x3   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(1) = [1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], -(i605[6], 1))

The following pairs are in Pbound:

COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], -(i605[6], 1))
LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])

The following pairs are in P:

LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])

There are no usable rules.

(32) Complex Obligation (AND)

(33) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(5): LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(i605[5] > 0, i5[5], i7[5], i605[5])


The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(34) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(35) TRUE

(36) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(37) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(38) TRUE

(39) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(9): COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], i436[9] - 1)
(8): LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(i436[8] > 0, i5[8], i7[8], i436[8])

(9) -> (8), if ((i436[9] - 1* i436[8])∧(i7[9]* i7[8])∧(i5[9]* i5[8]))


(8) -> (9), if ((i7[8]* i7[9])∧(i436[8]* i436[9])∧(i5[8]* i5[9])∧(i436[8] > 0* TRUE))



The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(40) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], -(i436[9], 1)) the following chains were created:
  • We consider the chain LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8]), COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], -(i436[9], 1)), LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8]) which results in the following constraint:

    (1)    (i7[8]=i7[9]i436[8]=i436[9]i5[8]=i5[9]>(i436[8], 0)=TRUE-(i436[9], 1)=i436[8]1i7[9]=i7[8]1i5[9]=i5[8]1COND_LOAD768(TRUE, i5[9], i7[9], i436[9])≥NonInfC∧COND_LOAD768(TRUE, i5[9], i7[9], i436[9])≥LOAD768(i5[9], i7[9], -(i436[9], 1))∧(UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i436[8], 0)=TRUECOND_LOAD768(TRUE, i5[8], i7[8], i436[8])≥NonInfC∧COND_LOAD768(TRUE, i5[8], i7[8], i436[8])≥LOAD768(i5[8], i7[8], -(i436[8], 1))∧(UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i436[8] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i436[8] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i436[8] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i436[8] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i436[8] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i436[8] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8]) the following chains were created:
  • We consider the chain LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8]), COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], -(i436[9], 1)) which results in the following constraint:

    (8)    (i7[8]=i7[9]i436[8]=i436[9]i5[8]=i5[9]>(i436[8], 0)=TRUELOAD768(i5[8], i7[8], i436[8])≥NonInfC∧LOAD768(i5[8], i7[8], i436[8])≥COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])∧(UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i436[8], 0)=TRUELOAD768(i5[8], i7[8], i436[8])≥NonInfC∧LOAD768(i5[8], i7[8], i436[8])≥COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])∧(UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i436[8] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i436[8] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i436[8] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i436[8] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i436[8] ≥ 0 ⇒ (UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i436[8] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], -(i436[9], 1))
    • (i436[8] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i436[8] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])
    • (i436[8] ≥ 0 ⇒ (UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i436[8] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(COND_LOAD768(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD768(x1, x2, x3)) = [-1] + x3   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(1) = [1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], -(i436[9], 1))

The following pairs are in Pbound:

COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], -(i436[9], 1))
LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])

The following pairs are in P:

LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])

There are no usable rules.

(41) Complex Obligation (AND)

(42) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(8): LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(i436[8] > 0, i5[8], i7[8], i436[8])


The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(43) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(44) TRUE

(45) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(46) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(47) TRUE

(48) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(12): COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], i296[12] - 1)
(11): LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(i296[11] > 0, i5[11], i7[11], i296[11])

(12) -> (11), if ((i296[12] - 1* i296[11])∧(i5[12]* i5[11])∧(i7[12]* i7[11]))


(11) -> (12), if ((i296[11] > 0* TRUE)∧(i7[11]* i7[12])∧(i296[11]* i296[12])∧(i5[11]* i5[12]))



The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(49) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], -(i296[12], 1)) the following chains were created:
  • We consider the chain LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11]), COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], -(i296[12], 1)), LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11]) which results in the following constraint:

    (1)    (>(i296[11], 0)=TRUEi7[11]=i7[12]i296[11]=i296[12]i5[11]=i5[12]-(i296[12], 1)=i296[11]1i5[12]=i5[11]1i7[12]=i7[11]1COND_LOAD608(TRUE, i5[12], i7[12], i296[12])≥NonInfC∧COND_LOAD608(TRUE, i5[12], i7[12], i296[12])≥LOAD608(i5[12], i7[12], -(i296[12], 1))∧(UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i296[11], 0)=TRUECOND_LOAD608(TRUE, i5[11], i7[11], i296[11])≥NonInfC∧COND_LOAD608(TRUE, i5[11], i7[11], i296[11])≥LOAD608(i5[11], i7[11], -(i296[11], 1))∧(UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i296[11] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i296[11] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i296[11] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i296[11] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i296[11] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i296[11] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11]) the following chains were created:
  • We consider the chain LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11]), COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], -(i296[12], 1)) which results in the following constraint:

    (8)    (>(i296[11], 0)=TRUEi7[11]=i7[12]i296[11]=i296[12]i5[11]=i5[12]LOAD608(i5[11], i7[11], i296[11])≥NonInfC∧LOAD608(i5[11], i7[11], i296[11])≥COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])∧(UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i296[11], 0)=TRUELOAD608(i5[11], i7[11], i296[11])≥NonInfC∧LOAD608(i5[11], i7[11], i296[11])≥COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])∧(UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i296[11] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i296[11] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i296[11] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i296[11] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i296[11] ≥ 0 ⇒ (UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i296[11] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], -(i296[12], 1))
    • (i296[11] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i296[11] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])
    • (i296[11] ≥ 0 ⇒ (UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i296[11] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(COND_LOAD608(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD608(x1, x2, x3)) = [-1] + x3   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(1) = [1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], -(i296[12], 1))

The following pairs are in Pbound:

COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], -(i296[12], 1))
LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])

The following pairs are in P:

LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])

There are no usable rules.

(50) Complex Obligation (AND)

(51) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(11): LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(i296[11] > 0, i5[11], i7[11], i296[11])


The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(52) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(53) TRUE

(54) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(55) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(56) TRUE

(57) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(15): COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], i187[15] - 1)
(14): LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(i187[14] > 0, i5[14], i7[14], i187[14])

(15) -> (14), if ((i187[15] - 1* i187[14])∧(i5[15]* i5[14])∧(i7[15]* i7[14]))


(14) -> (15), if ((i7[14]* i7[15])∧(i5[14]* i5[15])∧(i187[14]* i187[15])∧(i187[14] > 0* TRUE))



The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(58) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], -(i187[15], 1)) the following chains were created:
  • We consider the chain LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14]), COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], -(i187[15], 1)), LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14]) which results in the following constraint:

    (1)    (i7[14]=i7[15]i5[14]=i5[15]i187[14]=i187[15]>(i187[14], 0)=TRUE-(i187[15], 1)=i187[14]1i5[15]=i5[14]1i7[15]=i7[14]1COND_LOAD484(TRUE, i5[15], i7[15], i187[15])≥NonInfC∧COND_LOAD484(TRUE, i5[15], i7[15], i187[15])≥LOAD484(i5[15], i7[15], -(i187[15], 1))∧(UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i187[14], 0)=TRUECOND_LOAD484(TRUE, i5[14], i7[14], i187[14])≥NonInfC∧COND_LOAD484(TRUE, i5[14], i7[14], i187[14])≥LOAD484(i5[14], i7[14], -(i187[14], 1))∧(UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i187[14] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i187[14] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i187[14] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i187[14] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i187[14] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i187[14] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14]) the following chains were created:
  • We consider the chain LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14]), COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], -(i187[15], 1)) which results in the following constraint:

    (8)    (i7[14]=i7[15]i5[14]=i5[15]i187[14]=i187[15]>(i187[14], 0)=TRUELOAD484(i5[14], i7[14], i187[14])≥NonInfC∧LOAD484(i5[14], i7[14], i187[14])≥COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])∧(UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i187[14], 0)=TRUELOAD484(i5[14], i7[14], i187[14])≥NonInfC∧LOAD484(i5[14], i7[14], i187[14])≥COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])∧(UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i187[14] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i187[14] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i187[14] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i187[14] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i187[14] ≥ 0 ⇒ (UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i187[14] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], -(i187[15], 1))
    • (i187[14] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i187[14] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])
    • (i187[14] ≥ 0 ⇒ (UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i187[14] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(COND_LOAD484(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD484(x1, x2, x3)) = [-1] + x3   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(1) = [1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], -(i187[15], 1))

The following pairs are in Pbound:

COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], -(i187[15], 1))
LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])

The following pairs are in P:

LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])

There are no usable rules.

(59) Complex Obligation (AND)

(60) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(14): LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(i187[14] > 0, i5[14], i7[14], i187[14])


The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(61) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(62) TRUE

(63) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(64) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(65) TRUE

(66) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(18): COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], i104[18] - 1)
(17): LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(i104[17] > 0, i5[17], i7[17], i104[17])

(18) -> (17), if ((i104[18] - 1* i104[17])∧(i5[18]* i5[17])∧(i7[18]* i7[17]))


(17) -> (18), if ((i7[17]* i7[18])∧(i5[17]* i5[18])∧(i104[17]* i104[18])∧(i104[17] > 0* TRUE))



The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(67) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], -(i104[18], 1)) the following chains were created:
  • We consider the chain LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17]), COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], -(i104[18], 1)), LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17]) which results in the following constraint:

    (1)    (i7[17]=i7[18]i5[17]=i5[18]i104[17]=i104[18]>(i104[17], 0)=TRUE-(i104[18], 1)=i104[17]1i5[18]=i5[17]1i7[18]=i7[17]1COND_LOAD363(TRUE, i5[18], i7[18], i104[18])≥NonInfC∧COND_LOAD363(TRUE, i5[18], i7[18], i104[18])≥LOAD363(i5[18], i7[18], -(i104[18], 1))∧(UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i104[17], 0)=TRUECOND_LOAD363(TRUE, i5[17], i7[17], i104[17])≥NonInfC∧COND_LOAD363(TRUE, i5[17], i7[17], i104[17])≥LOAD363(i5[17], i7[17], -(i104[17], 1))∧(UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i104[17] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i104[17] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i104[17] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i104[17] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i104[17] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i104[17] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17]) the following chains were created:
  • We consider the chain LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17]), COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], -(i104[18], 1)) which results in the following constraint:

    (8)    (i7[17]=i7[18]i5[17]=i5[18]i104[17]=i104[18]>(i104[17], 0)=TRUELOAD363(i5[17], i7[17], i104[17])≥NonInfC∧LOAD363(i5[17], i7[17], i104[17])≥COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])∧(UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i104[17], 0)=TRUELOAD363(i5[17], i7[17], i104[17])≥NonInfC∧LOAD363(i5[17], i7[17], i104[17])≥COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])∧(UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i104[17] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i104[17] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i104[17] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i104[17] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i104[17] ≥ 0 ⇒ (UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i104[17] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], -(i104[18], 1))
    • (i104[17] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i104[17] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])
    • (i104[17] ≥ 0 ⇒ (UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i104[17] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(COND_LOAD363(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD363(x1, x2, x3)) = [-1] + x3   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(1) = [1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], -(i104[18], 1))

The following pairs are in Pbound:

COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], -(i104[18], 1))
LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])

The following pairs are in P:

LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])

There are no usable rules.

(68) Complex Obligation (AND)

(69) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(17): LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(i104[17] > 0, i5[17], i7[17], i104[17])


The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(70) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(71) TRUE

(72) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(73) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(74) TRUE

(75) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(21): COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], i49[21] - 1)
(20): LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(i49[20] > 0, i5[20], i7[20], i49[20])

(21) -> (20), if ((i7[21]* i7[20])∧(i49[21] - 1* i49[20])∧(i5[21]* i5[20]))


(20) -> (21), if ((i7[20]* i7[21])∧(i49[20] > 0* TRUE)∧(i5[20]* i5[21])∧(i49[20]* i49[21]))



The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(76) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], -(i49[21], 1)) the following chains were created:
  • We consider the chain LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20]), COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], -(i49[21], 1)), LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20]) which results in the following constraint:

    (1)    (i7[20]=i7[21]>(i49[20], 0)=TRUEi5[20]=i5[21]i49[20]=i49[21]i7[21]=i7[20]1-(i49[21], 1)=i49[20]1i5[21]=i5[20]1COND_LOAD258(TRUE, i5[21], i7[21], i49[21])≥NonInfC∧COND_LOAD258(TRUE, i5[21], i7[21], i49[21])≥LOAD258(i5[21], i7[21], -(i49[21], 1))∧(UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i49[20], 0)=TRUECOND_LOAD258(TRUE, i5[20], i7[20], i49[20])≥NonInfC∧COND_LOAD258(TRUE, i5[20], i7[20], i49[20])≥LOAD258(i5[20], i7[20], -(i49[20], 1))∧(UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i49[20] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i49[20] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i49[20] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i49[20] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i49[20] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i49[20] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20]) the following chains were created:
  • We consider the chain LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20]), COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], -(i49[21], 1)) which results in the following constraint:

    (8)    (i7[20]=i7[21]>(i49[20], 0)=TRUEi5[20]=i5[21]i49[20]=i49[21]LOAD258(i5[20], i7[20], i49[20])≥NonInfC∧LOAD258(i5[20], i7[20], i49[20])≥COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])∧(UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i49[20], 0)=TRUELOAD258(i5[20], i7[20], i49[20])≥NonInfC∧LOAD258(i5[20], i7[20], i49[20])≥COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])∧(UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i49[20] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i49[20] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i49[20] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i49[20] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i49[20] ≥ 0 ⇒ (UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i49[20] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], -(i49[21], 1))
    • (i49[20] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i49[20] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])
    • (i49[20] ≥ 0 ⇒ (UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i49[20] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(COND_LOAD258(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD258(x1, x2, x3)) = [-1] + x3   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(1) = [1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], -(i49[21], 1))

The following pairs are in Pbound:

COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], -(i49[21], 1))
LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])

The following pairs are in P:

LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])

There are no usable rules.

(77) Complex Obligation (AND)

(78) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(20): LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(i49[20] > 0, i5[20], i7[20], i49[20])


The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(79) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(80) TRUE

(81) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(82) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(83) TRUE

(84) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(26): LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(i20[26] > 0, i5[26], i7[26], i20[26])
(27): COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], i20[27] - 1)

(27) -> (26), if ((i20[27] - 1* i20[26])∧(i7[27]* i7[26])∧(i5[27]* i5[26]))


(26) -> (27), if ((i20[26] > 0* TRUE)∧(i7[26]* i7[27])∧(i20[26]* i20[27])∧(i5[26]* i5[27]))



The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(85) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26]) the following chains were created:
  • We consider the chain LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26]), COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], -(i20[27], 1)) which results in the following constraint:

    (1)    (>(i20[26], 0)=TRUEi7[26]=i7[27]i20[26]=i20[27]i5[26]=i5[27]LOAD175(i5[26], i7[26], i20[26])≥NonInfC∧LOAD175(i5[26], i7[26], i20[26])≥COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])∧(UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥))



    We simplified constraint (1) using rule (IV) which results in the following new constraint:

    (2)    (>(i20[26], 0)=TRUELOAD175(i5[26], i7[26], i20[26])≥NonInfC∧LOAD175(i5[26], i7[26], i20[26])≥COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])∧(UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i20[26] ≥ 0∧[(-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i20[26] ≥ 0∧[(-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i20[26] ≥ 0∧[(-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i20[26] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i20[26] ≥ 0 ⇒ (UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i20[26] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_14] ≥ 0)







For Pair COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], -(i20[27], 1)) the following chains were created:
  • We consider the chain LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26]), COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], -(i20[27], 1)), LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26]) which results in the following constraint:

    (8)    (>(i20[26], 0)=TRUEi7[26]=i7[27]i20[26]=i20[27]i5[26]=i5[27]-(i20[27], 1)=i20[26]1i7[27]=i7[26]1i5[27]=i5[26]1COND_LOAD175(TRUE, i5[27], i7[27], i20[27])≥NonInfC∧COND_LOAD175(TRUE, i5[27], i7[27], i20[27])≥LOAD175(i5[27], i7[27], -(i20[27], 1))∧(UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥))



    We simplified constraint (8) using rules (III), (IV) which results in the following new constraint:

    (9)    (>(i20[26], 0)=TRUECOND_LOAD175(TRUE, i5[26], i7[26], i20[26])≥NonInfC∧COND_LOAD175(TRUE, i5[26], i7[26], i20[26])≥LOAD175(i5[26], i7[26], -(i20[26], 1))∧(UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i20[26] ≥ 0∧[1 + (-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i20[26] ≥ 0∧[1 + (-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i20[26] ≥ 0∧[1 + (-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i20[26] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i20[26] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i20[26] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])
    • (i20[26] ≥ 0 ⇒ (UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i20[26] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_14] ≥ 0)

  • COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], -(i20[27], 1))
    • (i20[26] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i20[26] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_16] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(LOAD175(x1, x2, x3)) = [-1] + x3   
POL(COND_LOAD175(x1, x2, x3, x4)) = [-1] + x4   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(1) = [1]   

The following pairs are in P>:

COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], -(i20[27], 1))

The following pairs are in Pbound:

LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])
COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], -(i20[27], 1))

The following pairs are in P:

LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])

There are no usable rules.

(86) Complex Obligation (AND)

(87) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(26): LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(i20[26] > 0, i5[26], i7[26], i20[26])


The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(88) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(89) TRUE

(90) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(91) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(92) TRUE

(93) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(27): COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], i20[27] - 1)
(26): LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(i20[26] > 0, i5[26], i7[26], i20[26])
(21): COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], i49[21] - 1)
(20): LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(i49[20] > 0, i5[20], i7[20], i49[20])
(18): COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], i104[18] - 1)
(17): LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(i104[17] > 0, i5[17], i7[17], i104[17])
(15): COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], i187[15] - 1)
(14): LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(i187[14] > 0, i5[14], i7[14], i187[14])
(12): COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], i296[12] - 1)
(11): LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(i296[11] > 0, i5[11], i7[11], i296[11])
(9): COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], i436[9] - 1)
(8): LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(i436[8] > 0, i5[8], i7[8], i436[8])
(6): COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], i605[6] - 1)
(5): LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(i605[5] > 0, i5[5], i7[5], i605[5])
(3): COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], i696[3] - 1)
(2): LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(i696[2] > 0, i5[2], i7[2], i696[2])
(1): LOAD949(i5[1], i7[1], 0) → LOAD1100(i5[1], i7[1], i7[1])
(4): LOAD768(i5[4], i7[4], 0) → LOAD949(i5[4], i7[4], i7[4])
(7): LOAD608(i5[7], i7[7], 0) → LOAD768(i5[7], i7[7], i7[7])
(10): LOAD484(i5[10], i7[10], 0) → LOAD608(i5[10], i7[10], i7[10])
(13): LOAD363(i5[13], i7[13], 0) → LOAD484(i5[13], i7[13], i7[13])
(16): LOAD258(i5[16], i7[16], 0) → LOAD363(i5[16], i7[16], i7[16])
(19): LOAD175(i5[19], i7[19], 0) → LOAD258(i5[19], i7[19], i7[19])
(23): COND_LOAD83(TRUE, i5[23], i7[23]) → LOAD175(i5[23], i7[23], i7[23])
(0): LOAD1100(i5[0], i7[0], 0) → LOAD83(i5[0], i7[0] + 1)

(1) -> (0), if ((i7[1]* 0)∧(i5[1]* i5[0])∧(i7[1]* i7[0]))


(3) -> (0), if ((i7[3]* i7[0])∧(i5[3]* i5[0])∧(i696[3] - 1* 0))


(4) -> (1), if ((i5[4]* i5[1])∧(i7[4]* 0)∧(i7[4]* i7[1]))


(6) -> (1), if ((i605[6] - 1* 0)∧(i5[6]* i5[1])∧(i7[6]* i7[1]))


(1) -> (2), if ((i5[1]* i5[2])∧(i7[1]* i7[2])∧(i7[1]* i696[2]))


(3) -> (2), if ((i7[3]* i7[2])∧(i696[3] - 1* i696[2])∧(i5[3]* i5[2]))


(2) -> (3), if ((i5[2]* i5[3])∧(i7[2]* i7[3])∧(i696[2]* i696[3])∧(i696[2] > 0* TRUE))


(7) -> (4), if ((i7[7]* 0)∧(i7[7]* i7[4])∧(i5[7]* i5[4]))


(9) -> (4), if ((i7[9]* i7[4])∧(i436[9] - 1* 0)∧(i5[9]* i5[4]))


(4) -> (5), if ((i7[4]* i7[5])∧(i7[4]* i605[5])∧(i5[4]* i5[5]))


(6) -> (5), if ((i7[6]* i7[5])∧(i605[6] - 1* i605[5])∧(i5[6]* i5[5]))


(5) -> (6), if ((i5[5]* i5[6])∧(i7[5]* i7[6])∧(i605[5]* i605[6])∧(i605[5] > 0* TRUE))


(10) -> (7), if ((i5[10]* i5[7])∧(i7[10]* i7[7])∧(i7[10]* 0))


(12) -> (7), if ((i296[12] - 1* 0)∧(i7[12]* i7[7])∧(i5[12]* i5[7]))


(7) -> (8), if ((i5[7]* i5[8])∧(i7[7]* i436[8])∧(i7[7]* i7[8]))


(9) -> (8), if ((i436[9] - 1* i436[8])∧(i7[9]* i7[8])∧(i5[9]* i5[8]))


(8) -> (9), if ((i7[8]* i7[9])∧(i436[8]* i436[9])∧(i5[8]* i5[9])∧(i436[8] > 0* TRUE))


(13) -> (10), if ((i5[13]* i5[10])∧(i7[13]* 0)∧(i7[13]* i7[10]))


(15) -> (10), if ((i7[15]* i7[10])∧(i187[15] - 1* 0)∧(i5[15]* i5[10]))


(10) -> (11), if ((i7[10]* i7[11])∧(i5[10]* i5[11])∧(i7[10]* i296[11]))


(12) -> (11), if ((i296[12] - 1* i296[11])∧(i5[12]* i5[11])∧(i7[12]* i7[11]))


(11) -> (12), if ((i296[11] > 0* TRUE)∧(i7[11]* i7[12])∧(i296[11]* i296[12])∧(i5[11]* i5[12]))


(16) -> (13), if ((i7[16]* i7[13])∧(i7[16]* 0)∧(i5[16]* i5[13]))


(18) -> (13), if ((i5[18]* i5[13])∧(i104[18] - 1* 0)∧(i7[18]* i7[13]))


(13) -> (14), if ((i7[13]* i187[14])∧(i5[13]* i5[14])∧(i7[13]* i7[14]))


(15) -> (14), if ((i187[15] - 1* i187[14])∧(i5[15]* i5[14])∧(i7[15]* i7[14]))


(14) -> (15), if ((i7[14]* i7[15])∧(i5[14]* i5[15])∧(i187[14]* i187[15])∧(i187[14] > 0* TRUE))


(19) -> (16), if ((i7[19]* 0)∧(i5[19]* i5[16])∧(i7[19]* i7[16]))


(21) -> (16), if ((i7[21]* i7[16])∧(i49[21] - 1* 0)∧(i5[21]* i5[16]))


(16) -> (17), if ((i7[16]* i104[17])∧(i5[16]* i5[17])∧(i7[16]* i7[17]))


(18) -> (17), if ((i104[18] - 1* i104[17])∧(i5[18]* i5[17])∧(i7[18]* i7[17]))


(17) -> (18), if ((i7[17]* i7[18])∧(i5[17]* i5[18])∧(i104[17]* i104[18])∧(i104[17] > 0* TRUE))


(23) -> (19), if ((i5[23]* i5[19])∧(i7[23]* i7[19])∧(i7[23]* 0))


(27) -> (19), if ((i7[27]* i7[19])∧(i5[27]* i5[19])∧(i20[27] - 1* 0))


(19) -> (20), if ((i7[19]* i49[20])∧(i7[19]* i7[20])∧(i5[19]* i5[20]))


(21) -> (20), if ((i7[21]* i7[20])∧(i49[21] - 1* i49[20])∧(i5[21]* i5[20]))


(20) -> (21), if ((i7[20]* i7[21])∧(i49[20] > 0* TRUE)∧(i5[20]* i5[21])∧(i49[20]* i49[21]))


(23) -> (26), if ((i7[23]* i7[26])∧(i5[23]* i5[26])∧(i7[23]* i20[26]))


(27) -> (26), if ((i20[27] - 1* i20[26])∧(i7[27]* i7[26])∧(i5[27]* i5[26]))


(26) -> (27), if ((i20[26] > 0* TRUE)∧(i7[26]* i7[27])∧(i20[26]* i20[27])∧(i5[26]* i5[27]))



The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(94) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 8 SCCs with 9 less nodes.

(95) Complex Obligation (AND)

(96) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(3): COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], i696[3] - 1)
(2): LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(i696[2] > 0, i5[2], i7[2], i696[2])

(3) -> (2), if ((i7[3]* i7[2])∧(i696[3] - 1* i696[2])∧(i5[3]* i5[2]))


(2) -> (3), if ((i5[2]* i5[3])∧(i7[2]* i7[3])∧(i696[2]* i696[3])∧(i696[2] > 0* TRUE))



The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(97) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], -(i696[3], 1)) the following chains were created:
  • We consider the chain LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2]), COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], -(i696[3], 1)), LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2]) which results in the following constraint:

    (1)    (i5[2]=i5[3]i7[2]=i7[3]i696[2]=i696[3]>(i696[2], 0)=TRUEi7[3]=i7[2]1-(i696[3], 1)=i696[2]1i5[3]=i5[2]1COND_LOAD1100(TRUE, i5[3], i7[3], i696[3])≥NonInfC∧COND_LOAD1100(TRUE, i5[3], i7[3], i696[3])≥LOAD1100(i5[3], i7[3], -(i696[3], 1))∧(UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i696[2], 0)=TRUECOND_LOAD1100(TRUE, i5[2], i7[2], i696[2])≥NonInfC∧COND_LOAD1100(TRUE, i5[2], i7[2], i696[2])≥LOAD1100(i5[2], i7[2], -(i696[2], 1))∧(UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i696[2] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i696[2] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i696[2] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i696[2] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i696[2] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i696[2] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2]) the following chains were created:
  • We consider the chain LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2]), COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], -(i696[3], 1)) which results in the following constraint:

    (8)    (i5[2]=i5[3]i7[2]=i7[3]i696[2]=i696[3]>(i696[2], 0)=TRUELOAD1100(i5[2], i7[2], i696[2])≥NonInfC∧LOAD1100(i5[2], i7[2], i696[2])≥COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])∧(UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i696[2], 0)=TRUELOAD1100(i5[2], i7[2], i696[2])≥NonInfC∧LOAD1100(i5[2], i7[2], i696[2])≥COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])∧(UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i696[2] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i696[2] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i696[2] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i696[2] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i696[2] ≥ 0 ⇒ (UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i696[2] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], -(i696[3], 1))
    • (i696[2] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i696[2] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])
    • (i696[2] ≥ 0 ⇒ (UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i696[2] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(COND_LOAD1100(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD1100(x1, x2, x3)) = [-1] + x3   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(1) = [1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], -(i696[3], 1))

The following pairs are in Pbound:

COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], -(i696[3], 1))
LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])

The following pairs are in P:

LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])

There are no usable rules.

(98) Complex Obligation (AND)

(99) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(2): LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(i696[2] > 0, i5[2], i7[2], i696[2])


The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(100) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(101) TRUE

(102) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(103) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(104) TRUE

(105) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(6): COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], i605[6] - 1)
(5): LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(i605[5] > 0, i5[5], i7[5], i605[5])

(6) -> (5), if ((i7[6]* i7[5])∧(i605[6] - 1* i605[5])∧(i5[6]* i5[5]))


(5) -> (6), if ((i5[5]* i5[6])∧(i7[5]* i7[6])∧(i605[5]* i605[6])∧(i605[5] > 0* TRUE))



The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(106) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], -(i605[6], 1)) the following chains were created:
  • We consider the chain LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5]), COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], -(i605[6], 1)), LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5]) which results in the following constraint:

    (1)    (i5[5]=i5[6]i7[5]=i7[6]i605[5]=i605[6]>(i605[5], 0)=TRUEi7[6]=i7[5]1-(i605[6], 1)=i605[5]1i5[6]=i5[5]1COND_LOAD949(TRUE, i5[6], i7[6], i605[6])≥NonInfC∧COND_LOAD949(TRUE, i5[6], i7[6], i605[6])≥LOAD949(i5[6], i7[6], -(i605[6], 1))∧(UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i605[5], 0)=TRUECOND_LOAD949(TRUE, i5[5], i7[5], i605[5])≥NonInfC∧COND_LOAD949(TRUE, i5[5], i7[5], i605[5])≥LOAD949(i5[5], i7[5], -(i605[5], 1))∧(UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i605[5] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i605[5] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i605[5] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i605[5] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i605[5] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i605[5] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5]) the following chains were created:
  • We consider the chain LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5]), COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], -(i605[6], 1)) which results in the following constraint:

    (8)    (i5[5]=i5[6]i7[5]=i7[6]i605[5]=i605[6]>(i605[5], 0)=TRUELOAD949(i5[5], i7[5], i605[5])≥NonInfC∧LOAD949(i5[5], i7[5], i605[5])≥COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])∧(UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i605[5], 0)=TRUELOAD949(i5[5], i7[5], i605[5])≥NonInfC∧LOAD949(i5[5], i7[5], i605[5])≥COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])∧(UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i605[5] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i605[5] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i605[5] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i605[5] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i605[5] ≥ 0 ⇒ (UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i605[5] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], -(i605[6], 1))
    • (i605[5] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i605[5] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])
    • (i605[5] ≥ 0 ⇒ (UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i605[5] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(COND_LOAD949(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD949(x1, x2, x3)) = [-1] + x3   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(1) = [1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], -(i605[6], 1))

The following pairs are in Pbound:

COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], -(i605[6], 1))
LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])

The following pairs are in P:

LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])

There are no usable rules.

(107) Complex Obligation (AND)

(108) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(5): LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(i605[5] > 0, i5[5], i7[5], i605[5])


The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(109) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(110) TRUE

(111) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(112) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(113) TRUE

(114) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(9): COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], i436[9] - 1)
(8): LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(i436[8] > 0, i5[8], i7[8], i436[8])

(9) -> (8), if ((i436[9] - 1* i436[8])∧(i7[9]* i7[8])∧(i5[9]* i5[8]))


(8) -> (9), if ((i7[8]* i7[9])∧(i436[8]* i436[9])∧(i5[8]* i5[9])∧(i436[8] > 0* TRUE))



The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(115) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], -(i436[9], 1)) the following chains were created:
  • We consider the chain LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8]), COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], -(i436[9], 1)), LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8]) which results in the following constraint:

    (1)    (i7[8]=i7[9]i436[8]=i436[9]i5[8]=i5[9]>(i436[8], 0)=TRUE-(i436[9], 1)=i436[8]1i7[9]=i7[8]1i5[9]=i5[8]1COND_LOAD768(TRUE, i5[9], i7[9], i436[9])≥NonInfC∧COND_LOAD768(TRUE, i5[9], i7[9], i436[9])≥LOAD768(i5[9], i7[9], -(i436[9], 1))∧(UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i436[8], 0)=TRUECOND_LOAD768(TRUE, i5[8], i7[8], i436[8])≥NonInfC∧COND_LOAD768(TRUE, i5[8], i7[8], i436[8])≥LOAD768(i5[8], i7[8], -(i436[8], 1))∧(UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i436[8] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i436[8] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i436[8] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i436[8] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i436[8] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i436[8] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8]) the following chains were created:
  • We consider the chain LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8]), COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], -(i436[9], 1)) which results in the following constraint:

    (8)    (i7[8]=i7[9]i436[8]=i436[9]i5[8]=i5[9]>(i436[8], 0)=TRUELOAD768(i5[8], i7[8], i436[8])≥NonInfC∧LOAD768(i5[8], i7[8], i436[8])≥COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])∧(UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i436[8], 0)=TRUELOAD768(i5[8], i7[8], i436[8])≥NonInfC∧LOAD768(i5[8], i7[8], i436[8])≥COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])∧(UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i436[8] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i436[8] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i436[8] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i436[8] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i436[8] ≥ 0 ⇒ (UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i436[8] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], -(i436[9], 1))
    • (i436[8] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i436[8] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])
    • (i436[8] ≥ 0 ⇒ (UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i436[8] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(COND_LOAD768(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD768(x1, x2, x3)) = [-1] + x3   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(1) = [1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], -(i436[9], 1))

The following pairs are in Pbound:

COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], -(i436[9], 1))
LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])

The following pairs are in P:

LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])

There are no usable rules.

(116) Complex Obligation (AND)

(117) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(8): LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(i436[8] > 0, i5[8], i7[8], i436[8])


The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(118) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(119) TRUE

(120) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(121) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(122) TRUE

(123) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(12): COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], i296[12] - 1)
(11): LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(i296[11] > 0, i5[11], i7[11], i296[11])

(12) -> (11), if ((i296[12] - 1* i296[11])∧(i5[12]* i5[11])∧(i7[12]* i7[11]))


(11) -> (12), if ((i296[11] > 0* TRUE)∧(i7[11]* i7[12])∧(i296[11]* i296[12])∧(i5[11]* i5[12]))



The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(124) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], -(i296[12], 1)) the following chains were created:
  • We consider the chain LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11]), COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], -(i296[12], 1)), LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11]) which results in the following constraint:

    (1)    (>(i296[11], 0)=TRUEi7[11]=i7[12]i296[11]=i296[12]i5[11]=i5[12]-(i296[12], 1)=i296[11]1i5[12]=i5[11]1i7[12]=i7[11]1COND_LOAD608(TRUE, i5[12], i7[12], i296[12])≥NonInfC∧COND_LOAD608(TRUE, i5[12], i7[12], i296[12])≥LOAD608(i5[12], i7[12], -(i296[12], 1))∧(UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i296[11], 0)=TRUECOND_LOAD608(TRUE, i5[11], i7[11], i296[11])≥NonInfC∧COND_LOAD608(TRUE, i5[11], i7[11], i296[11])≥LOAD608(i5[11], i7[11], -(i296[11], 1))∧(UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i296[11] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i296[11] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i296[11] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i296[11] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i296[11] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i296[11] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11]) the following chains were created:
  • We consider the chain LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11]), COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], -(i296[12], 1)) which results in the following constraint:

    (8)    (>(i296[11], 0)=TRUEi7[11]=i7[12]i296[11]=i296[12]i5[11]=i5[12]LOAD608(i5[11], i7[11], i296[11])≥NonInfC∧LOAD608(i5[11], i7[11], i296[11])≥COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])∧(UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i296[11], 0)=TRUELOAD608(i5[11], i7[11], i296[11])≥NonInfC∧LOAD608(i5[11], i7[11], i296[11])≥COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])∧(UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i296[11] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i296[11] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i296[11] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i296[11] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i296[11] ≥ 0 ⇒ (UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i296[11] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], -(i296[12], 1))
    • (i296[11] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i296[11] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])
    • (i296[11] ≥ 0 ⇒ (UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i296[11] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(COND_LOAD608(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD608(x1, x2, x3)) = [-1] + x3   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(1) = [1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], -(i296[12], 1))

The following pairs are in Pbound:

COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], -(i296[12], 1))
LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])

The following pairs are in P:

LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])

There are no usable rules.

(125) Complex Obligation (AND)

(126) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(11): LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(i296[11] > 0, i5[11], i7[11], i296[11])


The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(127) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(128) TRUE

(129) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(130) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(131) TRUE

(132) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(15): COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], i187[15] - 1)
(14): LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(i187[14] > 0, i5[14], i7[14], i187[14])

(15) -> (14), if ((i187[15] - 1* i187[14])∧(i5[15]* i5[14])∧(i7[15]* i7[14]))


(14) -> (15), if ((i7[14]* i7[15])∧(i5[14]* i5[15])∧(i187[14]* i187[15])∧(i187[14] > 0* TRUE))



The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(133) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], -(i187[15], 1)) the following chains were created:
  • We consider the chain LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14]), COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], -(i187[15], 1)), LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14]) which results in the following constraint:

    (1)    (i7[14]=i7[15]i5[14]=i5[15]i187[14]=i187[15]>(i187[14], 0)=TRUE-(i187[15], 1)=i187[14]1i5[15]=i5[14]1i7[15]=i7[14]1COND_LOAD484(TRUE, i5[15], i7[15], i187[15])≥NonInfC∧COND_LOAD484(TRUE, i5[15], i7[15], i187[15])≥LOAD484(i5[15], i7[15], -(i187[15], 1))∧(UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i187[14], 0)=TRUECOND_LOAD484(TRUE, i5[14], i7[14], i187[14])≥NonInfC∧COND_LOAD484(TRUE, i5[14], i7[14], i187[14])≥LOAD484(i5[14], i7[14], -(i187[14], 1))∧(UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i187[14] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i187[14] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i187[14] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i187[14] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i187[14] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i187[14] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14]) the following chains were created:
  • We consider the chain LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14]), COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], -(i187[15], 1)) which results in the following constraint:

    (8)    (i7[14]=i7[15]i5[14]=i5[15]i187[14]=i187[15]>(i187[14], 0)=TRUELOAD484(i5[14], i7[14], i187[14])≥NonInfC∧LOAD484(i5[14], i7[14], i187[14])≥COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])∧(UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i187[14], 0)=TRUELOAD484(i5[14], i7[14], i187[14])≥NonInfC∧LOAD484(i5[14], i7[14], i187[14])≥COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])∧(UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i187[14] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i187[14] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i187[14] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i187[14] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i187[14] ≥ 0 ⇒ (UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i187[14] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], -(i187[15], 1))
    • (i187[14] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i187[14] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])
    • (i187[14] ≥ 0 ⇒ (UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i187[14] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(COND_LOAD484(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD484(x1, x2, x3)) = [-1] + x3   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(1) = [1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], -(i187[15], 1))

The following pairs are in Pbound:

COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], -(i187[15], 1))
LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])

The following pairs are in P:

LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])

There are no usable rules.

(134) Complex Obligation (AND)

(135) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(14): LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(i187[14] > 0, i5[14], i7[14], i187[14])


The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(136) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(137) TRUE

(138) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(139) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(140) TRUE

(141) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(18): COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], i104[18] - 1)
(17): LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(i104[17] > 0, i5[17], i7[17], i104[17])

(18) -> (17), if ((i104[18] - 1* i104[17])∧(i5[18]* i5[17])∧(i7[18]* i7[17]))


(17) -> (18), if ((i7[17]* i7[18])∧(i5[17]* i5[18])∧(i104[17]* i104[18])∧(i104[17] > 0* TRUE))



The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(142) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], -(i104[18], 1)) the following chains were created:
  • We consider the chain LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17]), COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], -(i104[18], 1)), LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17]) which results in the following constraint:

    (1)    (i7[17]=i7[18]i5[17]=i5[18]i104[17]=i104[18]>(i104[17], 0)=TRUE-(i104[18], 1)=i104[17]1i5[18]=i5[17]1i7[18]=i7[17]1COND_LOAD363(TRUE, i5[18], i7[18], i104[18])≥NonInfC∧COND_LOAD363(TRUE, i5[18], i7[18], i104[18])≥LOAD363(i5[18], i7[18], -(i104[18], 1))∧(UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i104[17], 0)=TRUECOND_LOAD363(TRUE, i5[17], i7[17], i104[17])≥NonInfC∧COND_LOAD363(TRUE, i5[17], i7[17], i104[17])≥LOAD363(i5[17], i7[17], -(i104[17], 1))∧(UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i104[17] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i104[17] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i104[17] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i104[17] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i104[17] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i104[17] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17]) the following chains were created:
  • We consider the chain LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17]), COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], -(i104[18], 1)) which results in the following constraint:

    (8)    (i7[17]=i7[18]i5[17]=i5[18]i104[17]=i104[18]>(i104[17], 0)=TRUELOAD363(i5[17], i7[17], i104[17])≥NonInfC∧LOAD363(i5[17], i7[17], i104[17])≥COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])∧(UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i104[17], 0)=TRUELOAD363(i5[17], i7[17], i104[17])≥NonInfC∧LOAD363(i5[17], i7[17], i104[17])≥COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])∧(UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i104[17] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i104[17] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i104[17] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i104[17] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i104[17] ≥ 0 ⇒ (UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i104[17] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], -(i104[18], 1))
    • (i104[17] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i104[17] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])
    • (i104[17] ≥ 0 ⇒ (UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i104[17] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(COND_LOAD363(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD363(x1, x2, x3)) = [-1] + x3   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(1) = [1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], -(i104[18], 1))

The following pairs are in Pbound:

COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], -(i104[18], 1))
LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])

The following pairs are in P:

LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])

There are no usable rules.

(143) Complex Obligation (AND)

(144) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(17): LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(i104[17] > 0, i5[17], i7[17], i104[17])


The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(145) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(146) TRUE

(147) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(148) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(149) TRUE

(150) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(21): COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], i49[21] - 1)
(20): LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(i49[20] > 0, i5[20], i7[20], i49[20])

(21) -> (20), if ((i7[21]* i7[20])∧(i49[21] - 1* i49[20])∧(i5[21]* i5[20]))


(20) -> (21), if ((i7[20]* i7[21])∧(i49[20] > 0* TRUE)∧(i5[20]* i5[21])∧(i49[20]* i49[21]))



The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(151) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], -(i49[21], 1)) the following chains were created:
  • We consider the chain LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20]), COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], -(i49[21], 1)), LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20]) which results in the following constraint:

    (1)    (i7[20]=i7[21]>(i49[20], 0)=TRUEi5[20]=i5[21]i49[20]=i49[21]i7[21]=i7[20]1-(i49[21], 1)=i49[20]1i5[21]=i5[20]1COND_LOAD258(TRUE, i5[21], i7[21], i49[21])≥NonInfC∧COND_LOAD258(TRUE, i5[21], i7[21], i49[21])≥LOAD258(i5[21], i7[21], -(i49[21], 1))∧(UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i49[20], 0)=TRUECOND_LOAD258(TRUE, i5[20], i7[20], i49[20])≥NonInfC∧COND_LOAD258(TRUE, i5[20], i7[20], i49[20])≥LOAD258(i5[20], i7[20], -(i49[20], 1))∧(UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i49[20] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i49[20] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i49[20] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i49[20] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i49[20] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i49[20] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20]) the following chains were created:
  • We consider the chain LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20]), COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], -(i49[21], 1)) which results in the following constraint:

    (8)    (i7[20]=i7[21]>(i49[20], 0)=TRUEi5[20]=i5[21]i49[20]=i49[21]LOAD258(i5[20], i7[20], i49[20])≥NonInfC∧LOAD258(i5[20], i7[20], i49[20])≥COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])∧(UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i49[20], 0)=TRUELOAD258(i5[20], i7[20], i49[20])≥NonInfC∧LOAD258(i5[20], i7[20], i49[20])≥COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])∧(UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i49[20] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i49[20] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i49[20] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i49[20] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i49[20] ≥ 0 ⇒ (UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i49[20] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], -(i49[21], 1))
    • (i49[20] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i49[20] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])
    • (i49[20] ≥ 0 ⇒ (UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i49[20] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(COND_LOAD258(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD258(x1, x2, x3)) = [-1] + x3   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(1) = [1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], -(i49[21], 1))

The following pairs are in Pbound:

COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], -(i49[21], 1))
LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])

The following pairs are in P:

LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])

There are no usable rules.

(152) Complex Obligation (AND)

(153) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(20): LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(i49[20] > 0, i5[20], i7[20], i49[20])


The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(154) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(155) TRUE

(156) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(157) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(158) TRUE

(159) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(26): LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(i20[26] > 0, i5[26], i7[26], i20[26])
(27): COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], i20[27] - 1)

(27) -> (26), if ((i20[27] - 1* i20[26])∧(i7[27]* i7[26])∧(i5[27]* i5[26]))


(26) -> (27), if ((i20[26] > 0* TRUE)∧(i7[26]* i7[27])∧(i20[26]* i20[27])∧(i5[26]* i5[27]))



The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(160) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26]) the following chains were created:
  • We consider the chain LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26]), COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], -(i20[27], 1)) which results in the following constraint:

    (1)    (>(i20[26], 0)=TRUEi7[26]=i7[27]i20[26]=i20[27]i5[26]=i5[27]LOAD175(i5[26], i7[26], i20[26])≥NonInfC∧LOAD175(i5[26], i7[26], i20[26])≥COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])∧(UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥))



    We simplified constraint (1) using rule (IV) which results in the following new constraint:

    (2)    (>(i20[26], 0)=TRUELOAD175(i5[26], i7[26], i20[26])≥NonInfC∧LOAD175(i5[26], i7[26], i20[26])≥COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])∧(UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i20[26] ≥ 0∧[(-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i20[26] ≥ 0∧[(-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i20[26] ≥ 0∧[(-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i20[26] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i20[26] ≥ 0 ⇒ (UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i20[26] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_14] ≥ 0)







For Pair COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], -(i20[27], 1)) the following chains were created:
  • We consider the chain LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26]), COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], -(i20[27], 1)), LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26]) which results in the following constraint:

    (8)    (>(i20[26], 0)=TRUEi7[26]=i7[27]i20[26]=i20[27]i5[26]=i5[27]-(i20[27], 1)=i20[26]1i7[27]=i7[26]1i5[27]=i5[26]1COND_LOAD175(TRUE, i5[27], i7[27], i20[27])≥NonInfC∧COND_LOAD175(TRUE, i5[27], i7[27], i20[27])≥LOAD175(i5[27], i7[27], -(i20[27], 1))∧(UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥))



    We simplified constraint (8) using rules (III), (IV) which results in the following new constraint:

    (9)    (>(i20[26], 0)=TRUECOND_LOAD175(TRUE, i5[26], i7[26], i20[26])≥NonInfC∧COND_LOAD175(TRUE, i5[26], i7[26], i20[26])≥LOAD175(i5[26], i7[26], -(i20[26], 1))∧(UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i20[26] ≥ 0∧[1 + (-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i20[26] ≥ 0∧[1 + (-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i20[26] ≥ 0∧[1 + (-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i20[26] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i20[26] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i20[26] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])
    • (i20[26] ≥ 0 ⇒ (UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i20[26] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_14] ≥ 0)

  • COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], -(i20[27], 1))
    • (i20[26] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i20[26] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_16] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(LOAD175(x1, x2, x3)) = [-1] + x3   
POL(COND_LOAD175(x1, x2, x3, x4)) = [-1] + x4   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(1) = [1]   

The following pairs are in P>:

COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], -(i20[27], 1))

The following pairs are in Pbound:

LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])
COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], -(i20[27], 1))

The following pairs are in P:

LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])

There are no usable rules.

(161) Complex Obligation (AND)

(162) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(26): LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(i20[26] > 0, i5[26], i7[26], i20[26])


The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(163) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(164) TRUE

(165) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(166) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(167) TRUE

(168) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


R is empty.

The integer pair graph contains the following rules and edges:
(0): LOAD1100(i5[0], i7[0], 0) → LOAD83(i5[0], i7[0] + 1)
(1): LOAD949(i5[1], i7[1], 0) → LOAD1100(i5[1], i7[1], i7[1])
(2): LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(i696[2] > 0, i5[2], i7[2], i696[2])
(3): COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], i696[3] - 1)
(4): LOAD768(i5[4], i7[4], 0) → LOAD949(i5[4], i7[4], i7[4])
(5): LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(i605[5] > 0, i5[5], i7[5], i605[5])
(6): COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], i605[6] - 1)
(7): LOAD608(i5[7], i7[7], 0) → LOAD768(i5[7], i7[7], i7[7])
(8): LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(i436[8] > 0, i5[8], i7[8], i436[8])
(9): COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], i436[9] - 1)
(10): LOAD484(i5[10], i7[10], 0) → LOAD608(i5[10], i7[10], i7[10])
(11): LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(i296[11] > 0, i5[11], i7[11], i296[11])
(12): COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], i296[12] - 1)
(13): LOAD363(i5[13], i7[13], 0) → LOAD484(i5[13], i7[13], i7[13])
(14): LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(i187[14] > 0, i5[14], i7[14], i187[14])
(15): COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], i187[15] - 1)
(16): LOAD258(i5[16], i7[16], 0) → LOAD363(i5[16], i7[16], i7[16])
(17): LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(i104[17] > 0, i5[17], i7[17], i104[17])
(18): COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], i104[18] - 1)
(19): LOAD175(i5[19], i7[19], 0) → LOAD258(i5[19], i7[19], i7[19])
(20): LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(i49[20] > 0, i5[20], i7[20], i49[20])
(21): COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], i49[21] - 1)
(22): LOAD83(i5[22], i7[22]) → COND_LOAD83(i7[22] > 0 && i7[22] < 100, i5[22], i7[22])
(23): COND_LOAD83(TRUE, i5[23], i7[23]) → LOAD175(i5[23], i7[23], i7[23])
(25): COND_LOAD55(TRUE, i5[25]) → LOAD175(i5[25], i5[25], i5[25])
(26): LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(i20[26] > 0, i5[26], i7[26], i20[26])
(27): COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], i20[27] - 1)

(1) -> (0), if ((i7[1]* 0)∧(i5[1]* i5[0])∧(i7[1]* i7[0]))


(3) -> (0), if ((i7[3]* i7[0])∧(i5[3]* i5[0])∧(i696[3] - 1* 0))


(4) -> (1), if ((i5[4]* i5[1])∧(i7[4]* 0)∧(i7[4]* i7[1]))


(6) -> (1), if ((i605[6] - 1* 0)∧(i5[6]* i5[1])∧(i7[6]* i7[1]))


(1) -> (2), if ((i5[1]* i5[2])∧(i7[1]* i7[2])∧(i7[1]* i696[2]))


(3) -> (2), if ((i7[3]* i7[2])∧(i696[3] - 1* i696[2])∧(i5[3]* i5[2]))


(2) -> (3), if ((i5[2]* i5[3])∧(i7[2]* i7[3])∧(i696[2]* i696[3])∧(i696[2] > 0* TRUE))


(7) -> (4), if ((i7[7]* 0)∧(i7[7]* i7[4])∧(i5[7]* i5[4]))


(9) -> (4), if ((i7[9]* i7[4])∧(i436[9] - 1* 0)∧(i5[9]* i5[4]))


(4) -> (5), if ((i7[4]* i7[5])∧(i7[4]* i605[5])∧(i5[4]* i5[5]))


(6) -> (5), if ((i7[6]* i7[5])∧(i605[6] - 1* i605[5])∧(i5[6]* i5[5]))


(5) -> (6), if ((i5[5]* i5[6])∧(i7[5]* i7[6])∧(i605[5]* i605[6])∧(i605[5] > 0* TRUE))


(10) -> (7), if ((i5[10]* i5[7])∧(i7[10]* i7[7])∧(i7[10]* 0))


(12) -> (7), if ((i296[12] - 1* 0)∧(i7[12]* i7[7])∧(i5[12]* i5[7]))


(7) -> (8), if ((i5[7]* i5[8])∧(i7[7]* i436[8])∧(i7[7]* i7[8]))


(9) -> (8), if ((i436[9] - 1* i436[8])∧(i7[9]* i7[8])∧(i5[9]* i5[8]))


(8) -> (9), if ((i7[8]* i7[9])∧(i436[8]* i436[9])∧(i5[8]* i5[9])∧(i436[8] > 0* TRUE))


(13) -> (10), if ((i5[13]* i5[10])∧(i7[13]* 0)∧(i7[13]* i7[10]))


(15) -> (10), if ((i7[15]* i7[10])∧(i187[15] - 1* 0)∧(i5[15]* i5[10]))


(10) -> (11), if ((i7[10]* i7[11])∧(i5[10]* i5[11])∧(i7[10]* i296[11]))


(12) -> (11), if ((i296[12] - 1* i296[11])∧(i5[12]* i5[11])∧(i7[12]* i7[11]))


(11) -> (12), if ((i296[11] > 0* TRUE)∧(i7[11]* i7[12])∧(i296[11]* i296[12])∧(i5[11]* i5[12]))


(16) -> (13), if ((i7[16]* i7[13])∧(i7[16]* 0)∧(i5[16]* i5[13]))


(18) -> (13), if ((i5[18]* i5[13])∧(i104[18] - 1* 0)∧(i7[18]* i7[13]))


(13) -> (14), if ((i7[13]* i187[14])∧(i5[13]* i5[14])∧(i7[13]* i7[14]))


(15) -> (14), if ((i187[15] - 1* i187[14])∧(i5[15]* i5[14])∧(i7[15]* i7[14]))


(14) -> (15), if ((i7[14]* i7[15])∧(i5[14]* i5[15])∧(i187[14]* i187[15])∧(i187[14] > 0* TRUE))


(19) -> (16), if ((i7[19]* 0)∧(i5[19]* i5[16])∧(i7[19]* i7[16]))


(21) -> (16), if ((i7[21]* i7[16])∧(i49[21] - 1* 0)∧(i5[21]* i5[16]))


(16) -> (17), if ((i7[16]* i104[17])∧(i5[16]* i5[17])∧(i7[16]* i7[17]))


(18) -> (17), if ((i104[18] - 1* i104[17])∧(i5[18]* i5[17])∧(i7[18]* i7[17]))


(17) -> (18), if ((i7[17]* i7[18])∧(i5[17]* i5[18])∧(i104[17]* i104[18])∧(i104[17] > 0* TRUE))


(23) -> (19), if ((i5[23]* i5[19])∧(i7[23]* i7[19])∧(i7[23]* 0))


(25) -> (19), if ((i5[25]* i5[19])∧(i5[25]* i7[19])∧(i5[25]* 0))


(27) -> (19), if ((i7[27]* i7[19])∧(i5[27]* i5[19])∧(i20[27] - 1* 0))


(19) -> (20), if ((i7[19]* i49[20])∧(i7[19]* i7[20])∧(i5[19]* i5[20]))


(21) -> (20), if ((i7[21]* i7[20])∧(i49[21] - 1* i49[20])∧(i5[21]* i5[20]))


(20) -> (21), if ((i7[20]* i7[21])∧(i49[20] > 0* TRUE)∧(i5[20]* i5[21])∧(i49[20]* i49[21]))


(0) -> (22), if ((i5[0]* i5[22])∧(i7[0] + 1* i7[22]))


(22) -> (23), if ((i5[22]* i5[23])∧(i7[22] > 0 && i7[22] < 100* TRUE)∧(i7[22]* i7[23]))


(23) -> (26), if ((i7[23]* i7[26])∧(i5[23]* i5[26])∧(i7[23]* i20[26]))


(25) -> (26), if ((i5[25]* i5[26])∧(i5[25]* i7[26])∧(i5[25]* i20[26]))


(27) -> (26), if ((i20[27] - 1* i20[26])∧(i7[27]* i7[26])∧(i5[27]* i5[26]))


(26) -> (27), if ((i20[26] > 0* TRUE)∧(i7[26]* i7[27])∧(i20[26]* i20[27])∧(i5[26]* i5[27]))



The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(169) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node.

(170) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


R is empty.

The integer pair graph contains the following rules and edges:
(27): COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], i20[27] - 1)
(26): LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(i20[26] > 0, i5[26], i7[26], i20[26])
(21): COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], i49[21] - 1)
(20): LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(i49[20] > 0, i5[20], i7[20], i49[20])
(18): COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], i104[18] - 1)
(17): LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(i104[17] > 0, i5[17], i7[17], i104[17])
(15): COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], i187[15] - 1)
(14): LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(i187[14] > 0, i5[14], i7[14], i187[14])
(12): COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], i296[12] - 1)
(11): LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(i296[11] > 0, i5[11], i7[11], i296[11])
(9): COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], i436[9] - 1)
(8): LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(i436[8] > 0, i5[8], i7[8], i436[8])
(6): COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], i605[6] - 1)
(5): LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(i605[5] > 0, i5[5], i7[5], i605[5])
(3): COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], i696[3] - 1)
(2): LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(i696[2] > 0, i5[2], i7[2], i696[2])
(1): LOAD949(i5[1], i7[1], 0) → LOAD1100(i5[1], i7[1], i7[1])
(4): LOAD768(i5[4], i7[4], 0) → LOAD949(i5[4], i7[4], i7[4])
(7): LOAD608(i5[7], i7[7], 0) → LOAD768(i5[7], i7[7], i7[7])
(10): LOAD484(i5[10], i7[10], 0) → LOAD608(i5[10], i7[10], i7[10])
(13): LOAD363(i5[13], i7[13], 0) → LOAD484(i5[13], i7[13], i7[13])
(16): LOAD258(i5[16], i7[16], 0) → LOAD363(i5[16], i7[16], i7[16])
(19): LOAD175(i5[19], i7[19], 0) → LOAD258(i5[19], i7[19], i7[19])
(23): COND_LOAD83(TRUE, i5[23], i7[23]) → LOAD175(i5[23], i7[23], i7[23])
(22): LOAD83(i5[22], i7[22]) → COND_LOAD83(i7[22] > 0 && i7[22] < 100, i5[22], i7[22])
(0): LOAD1100(i5[0], i7[0], 0) → LOAD83(i5[0], i7[0] + 1)

(1) -> (0), if ((i7[1]* 0)∧(i5[1]* i5[0])∧(i7[1]* i7[0]))


(3) -> (0), if ((i7[3]* i7[0])∧(i5[3]* i5[0])∧(i696[3] - 1* 0))


(4) -> (1), if ((i5[4]* i5[1])∧(i7[4]* 0)∧(i7[4]* i7[1]))


(6) -> (1), if ((i605[6] - 1* 0)∧(i5[6]* i5[1])∧(i7[6]* i7[1]))


(1) -> (2), if ((i5[1]* i5[2])∧(i7[1]* i7[2])∧(i7[1]* i696[2]))


(3) -> (2), if ((i7[3]* i7[2])∧(i696[3] - 1* i696[2])∧(i5[3]* i5[2]))


(2) -> (3), if ((i5[2]* i5[3])∧(i7[2]* i7[3])∧(i696[2]* i696[3])∧(i696[2] > 0* TRUE))


(7) -> (4), if ((i7[7]* 0)∧(i7[7]* i7[4])∧(i5[7]* i5[4]))


(9) -> (4), if ((i7[9]* i7[4])∧(i436[9] - 1* 0)∧(i5[9]* i5[4]))


(4) -> (5), if ((i7[4]* i7[5])∧(i7[4]* i605[5])∧(i5[4]* i5[5]))


(6) -> (5), if ((i7[6]* i7[5])∧(i605[6] - 1* i605[5])∧(i5[6]* i5[5]))


(5) -> (6), if ((i5[5]* i5[6])∧(i7[5]* i7[6])∧(i605[5]* i605[6])∧(i605[5] > 0* TRUE))


(10) -> (7), if ((i5[10]* i5[7])∧(i7[10]* i7[7])∧(i7[10]* 0))


(12) -> (7), if ((i296[12] - 1* 0)∧(i7[12]* i7[7])∧(i5[12]* i5[7]))


(7) -> (8), if ((i5[7]* i5[8])∧(i7[7]* i436[8])∧(i7[7]* i7[8]))


(9) -> (8), if ((i436[9] - 1* i436[8])∧(i7[9]* i7[8])∧(i5[9]* i5[8]))


(8) -> (9), if ((i7[8]* i7[9])∧(i436[8]* i436[9])∧(i5[8]* i5[9])∧(i436[8] > 0* TRUE))


(13) -> (10), if ((i5[13]* i5[10])∧(i7[13]* 0)∧(i7[13]* i7[10]))


(15) -> (10), if ((i7[15]* i7[10])∧(i187[15] - 1* 0)∧(i5[15]* i5[10]))


(10) -> (11), if ((i7[10]* i7[11])∧(i5[10]* i5[11])∧(i7[10]* i296[11]))


(12) -> (11), if ((i296[12] - 1* i296[11])∧(i5[12]* i5[11])∧(i7[12]* i7[11]))


(11) -> (12), if ((i296[11] > 0* TRUE)∧(i7[11]* i7[12])∧(i296[11]* i296[12])∧(i5[11]* i5[12]))


(16) -> (13), if ((i7[16]* i7[13])∧(i7[16]* 0)∧(i5[16]* i5[13]))


(18) -> (13), if ((i5[18]* i5[13])∧(i104[18] - 1* 0)∧(i7[18]* i7[13]))


(13) -> (14), if ((i7[13]* i187[14])∧(i5[13]* i5[14])∧(i7[13]* i7[14]))


(15) -> (14), if ((i187[15] - 1* i187[14])∧(i5[15]* i5[14])∧(i7[15]* i7[14]))


(14) -> (15), if ((i7[14]* i7[15])∧(i5[14]* i5[15])∧(i187[14]* i187[15])∧(i187[14] > 0* TRUE))


(19) -> (16), if ((i7[19]* 0)∧(i5[19]* i5[16])∧(i7[19]* i7[16]))


(21) -> (16), if ((i7[21]* i7[16])∧(i49[21] - 1* 0)∧(i5[21]* i5[16]))


(16) -> (17), if ((i7[16]* i104[17])∧(i5[16]* i5[17])∧(i7[16]* i7[17]))


(18) -> (17), if ((i104[18] - 1* i104[17])∧(i5[18]* i5[17])∧(i7[18]* i7[17]))


(17) -> (18), if ((i7[17]* i7[18])∧(i5[17]* i5[18])∧(i104[17]* i104[18])∧(i104[17] > 0* TRUE))


(23) -> (19), if ((i5[23]* i5[19])∧(i7[23]* i7[19])∧(i7[23]* 0))


(27) -> (19), if ((i7[27]* i7[19])∧(i5[27]* i5[19])∧(i20[27] - 1* 0))


(19) -> (20), if ((i7[19]* i49[20])∧(i7[19]* i7[20])∧(i5[19]* i5[20]))


(21) -> (20), if ((i7[21]* i7[20])∧(i49[21] - 1* i49[20])∧(i5[21]* i5[20]))


(20) -> (21), if ((i7[20]* i7[21])∧(i49[20] > 0* TRUE)∧(i5[20]* i5[21])∧(i49[20]* i49[21]))


(0) -> (22), if ((i5[0]* i5[22])∧(i7[0] + 1* i7[22]))


(22) -> (23), if ((i5[22]* i5[23])∧(i7[22] > 0 && i7[22] < 100* TRUE)∧(i7[22]* i7[23]))


(23) -> (26), if ((i7[23]* i7[26])∧(i5[23]* i5[26])∧(i7[23]* i20[26]))


(27) -> (26), if ((i20[27] - 1* i20[26])∧(i7[27]* i7[26])∧(i5[27]* i5[26]))


(26) -> (27), if ((i20[26] > 0* TRUE)∧(i7[26]* i7[27])∧(i20[26]* i20[27])∧(i5[26]* i5[27]))



The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(171) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], -(i20[27], 1)) the following chains were created:
  • We consider the chain LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26]), COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], -(i20[27], 1)), LOAD175(i5[19], i7[19], 0) → LOAD258(i5[19], i7[19], i7[19]) which results in the following constraint:

    (1)    (>(i20[26], 0)=TRUEi7[26]=i7[27]i20[26]=i20[27]i5[26]=i5[27]i7[27]=i7[19]i5[27]=i5[19]-(i20[27], 1)=0COND_LOAD175(TRUE, i5[27], i7[27], i20[27])≥NonInfC∧COND_LOAD175(TRUE, i5[27], i7[27], i20[27])≥LOAD175(i5[27], i7[27], -(i20[27], 1))∧(UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i20[26], 0)=TRUE-(i20[26], 1)=0COND_LOAD175(TRUE, i5[26], i7[26], i20[26])≥NonInfC∧COND_LOAD175(TRUE, i5[26], i7[26], i20[26])≥LOAD175(i5[26], i7[26], -(i20[26], 1))∧(UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i20[26] + [-1] ≥ 0∧i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧[(-1)bni_85 + (-1)Bound*bni_85] + [(-1)bni_85]i7[26] ≥ 0∧[(-1)bso_86] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i20[26] + [-1] ≥ 0∧i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧[(-1)bni_85 + (-1)Bound*bni_85] + [(-1)bni_85]i7[26] ≥ 0∧[(-1)bso_86] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i20[26] + [-1] ≥ 0∧i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧[(-1)bni_85 + (-1)Bound*bni_85] + [(-1)bni_85]i7[26] ≥ 0∧[(-1)bso_86] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i20[26] + [-1] ≥ 0∧i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧[(-1)bni_85] = 0∧0 = 0∧[(-1)bni_85 + (-1)Bound*bni_85] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_86] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i20[26] ≥ 0∧i20[26] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧[(-1)bni_85] = 0∧0 = 0∧[(-1)bni_85 + (-1)Bound*bni_85] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_86] ≥ 0)



  • We consider the chain LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26]), COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], -(i20[27], 1)), LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26]) which results in the following constraint:

    (8)    (>(i20[26], 0)=TRUEi7[26]=i7[27]i20[26]=i20[27]i5[26]=i5[27]-(i20[27], 1)=i20[26]1i7[27]=i7[26]1i5[27]=i5[26]1COND_LOAD175(TRUE, i5[27], i7[27], i20[27])≥NonInfC∧COND_LOAD175(TRUE, i5[27], i7[27], i20[27])≥LOAD175(i5[27], i7[27], -(i20[27], 1))∧(UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥))



    We simplified constraint (8) using rules (III), (IV) which results in the following new constraint:

    (9)    (>(i20[26], 0)=TRUECOND_LOAD175(TRUE, i5[26], i7[26], i20[26])≥NonInfC∧COND_LOAD175(TRUE, i5[26], i7[26], i20[26])≥LOAD175(i5[26], i7[26], -(i20[26], 1))∧(UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧[(-1)bni_85 + (-1)Bound*bni_85] + [(-1)bni_85]i7[26] ≥ 0∧[(-1)bso_86] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧[(-1)bni_85 + (-1)Bound*bni_85] + [(-1)bni_85]i7[26] ≥ 0∧[(-1)bso_86] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧[(-1)bni_85 + (-1)Bound*bni_85] + [(-1)bni_85]i7[26] ≥ 0∧[(-1)bso_86] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧[(-1)bni_85] = 0∧0 = 0∧[(-1)bni_85 + (-1)Bound*bni_85] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_86] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i20[26] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧[(-1)bni_85] = 0∧0 = 0∧[(-1)bni_85 + (-1)Bound*bni_85] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_86] ≥ 0)







For Pair LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26]) the following chains were created:
  • We consider the chain LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26]), COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], -(i20[27], 1)) which results in the following constraint:

    (15)    (>(i20[26], 0)=TRUEi7[26]=i7[27]i20[26]=i20[27]i5[26]=i5[27]LOAD175(i5[26], i7[26], i20[26])≥NonInfC∧LOAD175(i5[26], i7[26], i20[26])≥COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])∧(UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥))



    We simplified constraint (15) using rule (IV) which results in the following new constraint:

    (16)    (>(i20[26], 0)=TRUELOAD175(i5[26], i7[26], i20[26])≥NonInfC∧LOAD175(i5[26], i7[26], i20[26])≥COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])∧(UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥))



    We simplified constraint (16) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (17)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥)∧[(-1)bni_87 + (-1)Bound*bni_87] + [(-1)bni_87]i7[26] ≥ 0∧[(-1)bso_88] ≥ 0)



    We simplified constraint (17) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (18)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥)∧[(-1)bni_87 + (-1)Bound*bni_87] + [(-1)bni_87]i7[26] ≥ 0∧[(-1)bso_88] ≥ 0)



    We simplified constraint (18) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (19)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥)∧[(-1)bni_87 + (-1)Bound*bni_87] + [(-1)bni_87]i7[26] ≥ 0∧[(-1)bso_88] ≥ 0)



    We simplified constraint (19) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (20)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥)∧[(-1)bni_87] = 0∧0 = 0∧[(-1)bni_87 + (-1)Bound*bni_87] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_88] ≥ 0)



    We simplified constraint (20) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (21)    (i20[26] ≥ 0 ⇒ (UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥)∧[(-1)bni_87] = 0∧0 = 0∧[(-1)bni_87 + (-1)Bound*bni_87] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_88] ≥ 0)







For Pair COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], -(i49[21], 1)) the following chains were created:
  • We consider the chain LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20]), COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], -(i49[21], 1)), LOAD258(i5[16], i7[16], 0) → LOAD363(i5[16], i7[16], i7[16]) which results in the following constraint:

    (22)    (i7[20]=i7[21]>(i49[20], 0)=TRUEi5[20]=i5[21]i49[20]=i49[21]i7[21]=i7[16]-(i49[21], 1)=0i5[21]=i5[16]COND_LOAD258(TRUE, i5[21], i7[21], i49[21])≥NonInfC∧COND_LOAD258(TRUE, i5[21], i7[21], i49[21])≥LOAD258(i5[21], i7[21], -(i49[21], 1))∧(UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥))



    We simplified constraint (22) using rules (III), (IV) which results in the following new constraint:

    (23)    (>(i49[20], 0)=TRUE-(i49[20], 1)=0COND_LOAD258(TRUE, i5[20], i7[20], i49[20])≥NonInfC∧COND_LOAD258(TRUE, i5[20], i7[20], i49[20])≥LOAD258(i5[20], i7[20], -(i49[20], 1))∧(UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥))



    We simplified constraint (23) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (24)    (i49[20] + [-1] ≥ 0∧i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧[(-1)bni_89 + (-1)Bound*bni_89] + [(-1)bni_89]i7[20] ≥ 0∧[(-1)bso_90] ≥ 0)



    We simplified constraint (24) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (25)    (i49[20] + [-1] ≥ 0∧i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧[(-1)bni_89 + (-1)Bound*bni_89] + [(-1)bni_89]i7[20] ≥ 0∧[(-1)bso_90] ≥ 0)



    We simplified constraint (25) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (26)    (i49[20] + [-1] ≥ 0∧i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧[(-1)bni_89 + (-1)Bound*bni_89] + [(-1)bni_89]i7[20] ≥ 0∧[(-1)bso_90] ≥ 0)



    We simplified constraint (26) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (27)    (i49[20] + [-1] ≥ 0∧i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧[(-1)bni_89] = 0∧0 = 0∧[(-1)bni_89 + (-1)Bound*bni_89] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_90] ≥ 0)



    We simplified constraint (27) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (28)    (i49[20] ≥ 0∧i49[20] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧[(-1)bni_89] = 0∧0 = 0∧[(-1)bni_89 + (-1)Bound*bni_89] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_90] ≥ 0)



  • We consider the chain LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20]), COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], -(i49[21], 1)), LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20]) which results in the following constraint:

    (29)    (i7[20]=i7[21]>(i49[20], 0)=TRUEi5[20]=i5[21]i49[20]=i49[21]i7[21]=i7[20]1-(i49[21], 1)=i49[20]1i5[21]=i5[20]1COND_LOAD258(TRUE, i5[21], i7[21], i49[21])≥NonInfC∧COND_LOAD258(TRUE, i5[21], i7[21], i49[21])≥LOAD258(i5[21], i7[21], -(i49[21], 1))∧(UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥))



    We simplified constraint (29) using rules (III), (IV) which results in the following new constraint:

    (30)    (>(i49[20], 0)=TRUECOND_LOAD258(TRUE, i5[20], i7[20], i49[20])≥NonInfC∧COND_LOAD258(TRUE, i5[20], i7[20], i49[20])≥LOAD258(i5[20], i7[20], -(i49[20], 1))∧(UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥))



    We simplified constraint (30) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (31)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧[(-1)bni_89 + (-1)Bound*bni_89] + [(-1)bni_89]i7[20] ≥ 0∧[(-1)bso_90] ≥ 0)



    We simplified constraint (31) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (32)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧[(-1)bni_89 + (-1)Bound*bni_89] + [(-1)bni_89]i7[20] ≥ 0∧[(-1)bso_90] ≥ 0)



    We simplified constraint (32) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (33)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧[(-1)bni_89 + (-1)Bound*bni_89] + [(-1)bni_89]i7[20] ≥ 0∧[(-1)bso_90] ≥ 0)



    We simplified constraint (33) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (34)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧[(-1)bni_89] = 0∧0 = 0∧[(-1)bni_89 + (-1)Bound*bni_89] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_90] ≥ 0)



    We simplified constraint (34) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (35)    (i49[20] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧[(-1)bni_89] = 0∧0 = 0∧[(-1)bni_89 + (-1)Bound*bni_89] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_90] ≥ 0)







For Pair LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20]) the following chains were created:
  • We consider the chain LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20]), COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], -(i49[21], 1)) which results in the following constraint:

    (36)    (i7[20]=i7[21]>(i49[20], 0)=TRUEi5[20]=i5[21]i49[20]=i49[21]LOAD258(i5[20], i7[20], i49[20])≥NonInfC∧LOAD258(i5[20], i7[20], i49[20])≥COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])∧(UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥))



    We simplified constraint (36) using rule (IV) which results in the following new constraint:

    (37)    (>(i49[20], 0)=TRUELOAD258(i5[20], i7[20], i49[20])≥NonInfC∧LOAD258(i5[20], i7[20], i49[20])≥COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])∧(UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥))



    We simplified constraint (37) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (38)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥)∧[(-1)bni_91 + (-1)Bound*bni_91] + [(-1)bni_91]i7[20] ≥ 0∧[(-1)bso_92] ≥ 0)



    We simplified constraint (38) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (39)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥)∧[(-1)bni_91 + (-1)Bound*bni_91] + [(-1)bni_91]i7[20] ≥ 0∧[(-1)bso_92] ≥ 0)



    We simplified constraint (39) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (40)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥)∧[(-1)bni_91 + (-1)Bound*bni_91] + [(-1)bni_91]i7[20] ≥ 0∧[(-1)bso_92] ≥ 0)



    We simplified constraint (40) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (41)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥)∧[(-1)bni_91] = 0∧0 = 0∧[(-1)bni_91 + (-1)Bound*bni_91] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_92] ≥ 0)



    We simplified constraint (41) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (42)    (i49[20] ≥ 0 ⇒ (UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥)∧[(-1)bni_91] = 0∧0 = 0∧[(-1)bni_91 + (-1)Bound*bni_91] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_92] ≥ 0)







For Pair COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], -(i104[18], 1)) the following chains were created:
  • We consider the chain LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17]), COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], -(i104[18], 1)), LOAD363(i5[13], i7[13], 0) → LOAD484(i5[13], i7[13], i7[13]) which results in the following constraint:

    (43)    (i7[17]=i7[18]i5[17]=i5[18]i104[17]=i104[18]>(i104[17], 0)=TRUEi5[18]=i5[13]-(i104[18], 1)=0i7[18]=i7[13]COND_LOAD363(TRUE, i5[18], i7[18], i104[18])≥NonInfC∧COND_LOAD363(TRUE, i5[18], i7[18], i104[18])≥LOAD363(i5[18], i7[18], -(i104[18], 1))∧(UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥))



    We simplified constraint (43) using rules (III), (IV) which results in the following new constraint:

    (44)    (>(i104[17], 0)=TRUE-(i104[17], 1)=0COND_LOAD363(TRUE, i5[17], i7[17], i104[17])≥NonInfC∧COND_LOAD363(TRUE, i5[17], i7[17], i104[17])≥LOAD363(i5[17], i7[17], -(i104[17], 1))∧(UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥))



    We simplified constraint (44) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (45)    (i104[17] + [-1] ≥ 0∧i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧[(-1)bni_93 + (-1)Bound*bni_93] + [(-1)bni_93]i7[17] ≥ 0∧[(-1)bso_94] ≥ 0)



    We simplified constraint (45) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (46)    (i104[17] + [-1] ≥ 0∧i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧[(-1)bni_93 + (-1)Bound*bni_93] + [(-1)bni_93]i7[17] ≥ 0∧[(-1)bso_94] ≥ 0)



    We simplified constraint (46) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (47)    (i104[17] + [-1] ≥ 0∧i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧[(-1)bni_93 + (-1)Bound*bni_93] + [(-1)bni_93]i7[17] ≥ 0∧[(-1)bso_94] ≥ 0)



    We simplified constraint (47) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (48)    (i104[17] + [-1] ≥ 0∧i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧[(-1)bni_93] = 0∧0 = 0∧[(-1)bni_93 + (-1)Bound*bni_93] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_94] ≥ 0)



    We simplified constraint (48) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (49)    (i104[17] ≥ 0∧i104[17] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧[(-1)bni_93] = 0∧0 = 0∧[(-1)bni_93 + (-1)Bound*bni_93] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_94] ≥ 0)



  • We consider the chain LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17]), COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], -(i104[18], 1)), LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17]) which results in the following constraint:

    (50)    (i7[17]=i7[18]i5[17]=i5[18]i104[17]=i104[18]>(i104[17], 0)=TRUE-(i104[18], 1)=i104[17]1i5[18]=i5[17]1i7[18]=i7[17]1COND_LOAD363(TRUE, i5[18], i7[18], i104[18])≥NonInfC∧COND_LOAD363(TRUE, i5[18], i7[18], i104[18])≥LOAD363(i5[18], i7[18], -(i104[18], 1))∧(UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥))



    We simplified constraint (50) using rules (III), (IV) which results in the following new constraint:

    (51)    (>(i104[17], 0)=TRUECOND_LOAD363(TRUE, i5[17], i7[17], i104[17])≥NonInfC∧COND_LOAD363(TRUE, i5[17], i7[17], i104[17])≥LOAD363(i5[17], i7[17], -(i104[17], 1))∧(UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥))



    We simplified constraint (51) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (52)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧[(-1)bni_93 + (-1)Bound*bni_93] + [(-1)bni_93]i7[17] ≥ 0∧[(-1)bso_94] ≥ 0)



    We simplified constraint (52) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (53)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧[(-1)bni_93 + (-1)Bound*bni_93] + [(-1)bni_93]i7[17] ≥ 0∧[(-1)bso_94] ≥ 0)



    We simplified constraint (53) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (54)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧[(-1)bni_93 + (-1)Bound*bni_93] + [(-1)bni_93]i7[17] ≥ 0∧[(-1)bso_94] ≥ 0)



    We simplified constraint (54) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (55)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧[(-1)bni_93] = 0∧0 = 0∧[(-1)bni_93 + (-1)Bound*bni_93] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_94] ≥ 0)



    We simplified constraint (55) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (56)    (i104[17] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧[(-1)bni_93] = 0∧0 = 0∧[(-1)bni_93 + (-1)Bound*bni_93] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_94] ≥ 0)







For Pair LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17]) the following chains were created:
  • We consider the chain LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17]), COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], -(i104[18], 1)) which results in the following constraint:

    (57)    (i7[17]=i7[18]i5[17]=i5[18]i104[17]=i104[18]>(i104[17], 0)=TRUELOAD363(i5[17], i7[17], i104[17])≥NonInfC∧LOAD363(i5[17], i7[17], i104[17])≥COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])∧(UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥))



    We simplified constraint (57) using rule (IV) which results in the following new constraint:

    (58)    (>(i104[17], 0)=TRUELOAD363(i5[17], i7[17], i104[17])≥NonInfC∧LOAD363(i5[17], i7[17], i104[17])≥COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])∧(UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥))



    We simplified constraint (58) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (59)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥)∧[(-1)bni_95 + (-1)Bound*bni_95] + [(-1)bni_95]i7[17] ≥ 0∧[(-1)bso_96] ≥ 0)



    We simplified constraint (59) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (60)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥)∧[(-1)bni_95 + (-1)Bound*bni_95] + [(-1)bni_95]i7[17] ≥ 0∧[(-1)bso_96] ≥ 0)



    We simplified constraint (60) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (61)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥)∧[(-1)bni_95 + (-1)Bound*bni_95] + [(-1)bni_95]i7[17] ≥ 0∧[(-1)bso_96] ≥ 0)



    We simplified constraint (61) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (62)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥)∧[(-1)bni_95] = 0∧0 = 0∧[(-1)bni_95 + (-1)Bound*bni_95] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_96] ≥ 0)



    We simplified constraint (62) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (63)    (i104[17] ≥ 0 ⇒ (UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥)∧[(-1)bni_95] = 0∧0 = 0∧[(-1)bni_95 + (-1)Bound*bni_95] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_96] ≥ 0)







For Pair COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], -(i187[15], 1)) the following chains were created:
  • We consider the chain LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14]), COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], -(i187[15], 1)), LOAD484(i5[10], i7[10], 0) → LOAD608(i5[10], i7[10], i7[10]) which results in the following constraint:

    (64)    (i7[14]=i7[15]i5[14]=i5[15]i187[14]=i187[15]>(i187[14], 0)=TRUEi7[15]=i7[10]-(i187[15], 1)=0i5[15]=i5[10]COND_LOAD484(TRUE, i5[15], i7[15], i187[15])≥NonInfC∧COND_LOAD484(TRUE, i5[15], i7[15], i187[15])≥LOAD484(i5[15], i7[15], -(i187[15], 1))∧(UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥))



    We simplified constraint (64) using rules (III), (IV) which results in the following new constraint:

    (65)    (>(i187[14], 0)=TRUE-(i187[14], 1)=0COND_LOAD484(TRUE, i5[14], i7[14], i187[14])≥NonInfC∧COND_LOAD484(TRUE, i5[14], i7[14], i187[14])≥LOAD484(i5[14], i7[14], -(i187[14], 1))∧(UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥))



    We simplified constraint (65) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (66)    (i187[14] + [-1] ≥ 0∧i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧[(-1)bni_97 + (-1)Bound*bni_97] + [(-1)bni_97]i7[14] ≥ 0∧[(-1)bso_98] ≥ 0)



    We simplified constraint (66) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (67)    (i187[14] + [-1] ≥ 0∧i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧[(-1)bni_97 + (-1)Bound*bni_97] + [(-1)bni_97]i7[14] ≥ 0∧[(-1)bso_98] ≥ 0)



    We simplified constraint (67) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (68)    (i187[14] + [-1] ≥ 0∧i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧[(-1)bni_97 + (-1)Bound*bni_97] + [(-1)bni_97]i7[14] ≥ 0∧[(-1)bso_98] ≥ 0)



    We simplified constraint (68) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (69)    (i187[14] + [-1] ≥ 0∧i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧[(-1)bni_97] = 0∧0 = 0∧[(-1)bni_97 + (-1)Bound*bni_97] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_98] ≥ 0)



    We simplified constraint (69) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (70)    (i187[14] ≥ 0∧i187[14] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧[(-1)bni_97] = 0∧0 = 0∧[(-1)bni_97 + (-1)Bound*bni_97] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_98] ≥ 0)



  • We consider the chain LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14]), COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], -(i187[15], 1)), LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14]) which results in the following constraint:

    (71)    (i7[14]=i7[15]i5[14]=i5[15]i187[14]=i187[15]>(i187[14], 0)=TRUE-(i187[15], 1)=i187[14]1i5[15]=i5[14]1i7[15]=i7[14]1COND_LOAD484(TRUE, i5[15], i7[15], i187[15])≥NonInfC∧COND_LOAD484(TRUE, i5[15], i7[15], i187[15])≥LOAD484(i5[15], i7[15], -(i187[15], 1))∧(UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥))



    We simplified constraint (71) using rules (III), (IV) which results in the following new constraint:

    (72)    (>(i187[14], 0)=TRUECOND_LOAD484(TRUE, i5[14], i7[14], i187[14])≥NonInfC∧COND_LOAD484(TRUE, i5[14], i7[14], i187[14])≥LOAD484(i5[14], i7[14], -(i187[14], 1))∧(UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥))



    We simplified constraint (72) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (73)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧[(-1)bni_97 + (-1)Bound*bni_97] + [(-1)bni_97]i7[14] ≥ 0∧[(-1)bso_98] ≥ 0)



    We simplified constraint (73) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (74)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧[(-1)bni_97 + (-1)Bound*bni_97] + [(-1)bni_97]i7[14] ≥ 0∧[(-1)bso_98] ≥ 0)



    We simplified constraint (74) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (75)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧[(-1)bni_97 + (-1)Bound*bni_97] + [(-1)bni_97]i7[14] ≥ 0∧[(-1)bso_98] ≥ 0)



    We simplified constraint (75) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (76)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧[(-1)bni_97] = 0∧0 = 0∧[(-1)bni_97 + (-1)Bound*bni_97] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_98] ≥ 0)



    We simplified constraint (76) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (77)    (i187[14] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧[(-1)bni_97] = 0∧0 = 0∧[(-1)bni_97 + (-1)Bound*bni_97] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_98] ≥ 0)







For Pair LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14]) the following chains were created:
  • We consider the chain LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14]), COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], -(i187[15], 1)) which results in the following constraint:

    (78)    (i7[14]=i7[15]i5[14]=i5[15]i187[14]=i187[15]>(i187[14], 0)=TRUELOAD484(i5[14], i7[14], i187[14])≥NonInfC∧LOAD484(i5[14], i7[14], i187[14])≥COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])∧(UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥))



    We simplified constraint (78) using rule (IV) which results in the following new constraint:

    (79)    (>(i187[14], 0)=TRUELOAD484(i5[14], i7[14], i187[14])≥NonInfC∧LOAD484(i5[14], i7[14], i187[14])≥COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])∧(UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥))



    We simplified constraint (79) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (80)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥)∧[(-1)bni_99 + (-1)Bound*bni_99] + [(-1)bni_99]i7[14] ≥ 0∧[(-1)bso_100] ≥ 0)



    We simplified constraint (80) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (81)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥)∧[(-1)bni_99 + (-1)Bound*bni_99] + [(-1)bni_99]i7[14] ≥ 0∧[(-1)bso_100] ≥ 0)



    We simplified constraint (81) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (82)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥)∧[(-1)bni_99 + (-1)Bound*bni_99] + [(-1)bni_99]i7[14] ≥ 0∧[(-1)bso_100] ≥ 0)



    We simplified constraint (82) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (83)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥)∧[(-1)bni_99] = 0∧0 = 0∧[(-1)bni_99 + (-1)Bound*bni_99] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_100] ≥ 0)



    We simplified constraint (83) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (84)    (i187[14] ≥ 0 ⇒ (UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥)∧[(-1)bni_99] = 0∧0 = 0∧[(-1)bni_99 + (-1)Bound*bni_99] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_100] ≥ 0)







For Pair COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], -(i296[12], 1)) the following chains were created:
  • We consider the chain LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11]), COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], -(i296[12], 1)), LOAD608(i5[7], i7[7], 0) → LOAD768(i5[7], i7[7], i7[7]) which results in the following constraint:

    (85)    (>(i296[11], 0)=TRUEi7[11]=i7[12]i296[11]=i296[12]i5[11]=i5[12]-(i296[12], 1)=0i7[12]=i7[7]i5[12]=i5[7]COND_LOAD608(TRUE, i5[12], i7[12], i296[12])≥NonInfC∧COND_LOAD608(TRUE, i5[12], i7[12], i296[12])≥LOAD608(i5[12], i7[12], -(i296[12], 1))∧(UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥))



    We simplified constraint (85) using rules (III), (IV) which results in the following new constraint:

    (86)    (>(i296[11], 0)=TRUE-(i296[11], 1)=0COND_LOAD608(TRUE, i5[11], i7[11], i296[11])≥NonInfC∧COND_LOAD608(TRUE, i5[11], i7[11], i296[11])≥LOAD608(i5[11], i7[11], -(i296[11], 1))∧(UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥))



    We simplified constraint (86) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (87)    (i296[11] + [-1] ≥ 0∧i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧[(-1)bni_101 + (-1)Bound*bni_101] + [(-1)bni_101]i7[11] ≥ 0∧[(-1)bso_102] ≥ 0)



    We simplified constraint (87) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (88)    (i296[11] + [-1] ≥ 0∧i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧[(-1)bni_101 + (-1)Bound*bni_101] + [(-1)bni_101]i7[11] ≥ 0∧[(-1)bso_102] ≥ 0)



    We simplified constraint (88) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (89)    (i296[11] + [-1] ≥ 0∧i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧[(-1)bni_101 + (-1)Bound*bni_101] + [(-1)bni_101]i7[11] ≥ 0∧[(-1)bso_102] ≥ 0)



    We simplified constraint (89) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (90)    (i296[11] + [-1] ≥ 0∧i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧[(-1)bni_101] = 0∧0 = 0∧[(-1)bni_101 + (-1)Bound*bni_101] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_102] ≥ 0)



    We simplified constraint (90) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (91)    (i296[11] ≥ 0∧i296[11] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧[(-1)bni_101] = 0∧0 = 0∧[(-1)bni_101 + (-1)Bound*bni_101] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_102] ≥ 0)



  • We consider the chain LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11]), COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], -(i296[12], 1)), LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11]) which results in the following constraint:

    (92)    (>(i296[11], 0)=TRUEi7[11]=i7[12]i296[11]=i296[12]i5[11]=i5[12]-(i296[12], 1)=i296[11]1i5[12]=i5[11]1i7[12]=i7[11]1COND_LOAD608(TRUE, i5[12], i7[12], i296[12])≥NonInfC∧COND_LOAD608(TRUE, i5[12], i7[12], i296[12])≥LOAD608(i5[12], i7[12], -(i296[12], 1))∧(UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥))



    We simplified constraint (92) using rules (III), (IV) which results in the following new constraint:

    (93)    (>(i296[11], 0)=TRUECOND_LOAD608(TRUE, i5[11], i7[11], i296[11])≥NonInfC∧COND_LOAD608(TRUE, i5[11], i7[11], i296[11])≥LOAD608(i5[11], i7[11], -(i296[11], 1))∧(UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥))



    We simplified constraint (93) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (94)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧[(-1)bni_101 + (-1)Bound*bni_101] + [(-1)bni_101]i7[11] ≥ 0∧[(-1)bso_102] ≥ 0)



    We simplified constraint (94) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (95)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧[(-1)bni_101 + (-1)Bound*bni_101] + [(-1)bni_101]i7[11] ≥ 0∧[(-1)bso_102] ≥ 0)



    We simplified constraint (95) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (96)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧[(-1)bni_101 + (-1)Bound*bni_101] + [(-1)bni_101]i7[11] ≥ 0∧[(-1)bso_102] ≥ 0)



    We simplified constraint (96) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (97)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧[(-1)bni_101] = 0∧0 = 0∧[(-1)bni_101 + (-1)Bound*bni_101] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_102] ≥ 0)



    We simplified constraint (97) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (98)    (i296[11] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧[(-1)bni_101] = 0∧0 = 0∧[(-1)bni_101 + (-1)Bound*bni_101] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_102] ≥ 0)







For Pair LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11]) the following chains were created:
  • We consider the chain LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11]), COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], -(i296[12], 1)) which results in the following constraint:

    (99)    (>(i296[11], 0)=TRUEi7[11]=i7[12]i296[11]=i296[12]i5[11]=i5[12]LOAD608(i5[11], i7[11], i296[11])≥NonInfC∧LOAD608(i5[11], i7[11], i296[11])≥COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])∧(UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥))



    We simplified constraint (99) using rule (IV) which results in the following new constraint:

    (100)    (>(i296[11], 0)=TRUELOAD608(i5[11], i7[11], i296[11])≥NonInfC∧LOAD608(i5[11], i7[11], i296[11])≥COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])∧(UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥))



    We simplified constraint (100) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (101)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥)∧[(-1)bni_103 + (-1)Bound*bni_103] + [(-1)bni_103]i7[11] ≥ 0∧[(-1)bso_104] ≥ 0)



    We simplified constraint (101) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (102)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥)∧[(-1)bni_103 + (-1)Bound*bni_103] + [(-1)bni_103]i7[11] ≥ 0∧[(-1)bso_104] ≥ 0)



    We simplified constraint (102) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (103)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥)∧[(-1)bni_103 + (-1)Bound*bni_103] + [(-1)bni_103]i7[11] ≥ 0∧[(-1)bso_104] ≥ 0)



    We simplified constraint (103) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (104)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥)∧[(-1)bni_103] = 0∧0 = 0∧[(-1)bni_103 + (-1)Bound*bni_103] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_104] ≥ 0)



    We simplified constraint (104) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (105)    (i296[11] ≥ 0 ⇒ (UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥)∧[(-1)bni_103] = 0∧0 = 0∧[(-1)bni_103 + (-1)Bound*bni_103] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_104] ≥ 0)







For Pair COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], -(i436[9], 1)) the following chains were created:
  • We consider the chain LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8]), COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], -(i436[9], 1)), LOAD768(i5[4], i7[4], 0) → LOAD949(i5[4], i7[4], i7[4]) which results in the following constraint:

    (106)    (i7[8]=i7[9]i436[8]=i436[9]i5[8]=i5[9]>(i436[8], 0)=TRUEi7[9]=i7[4]-(i436[9], 1)=0i5[9]=i5[4]COND_LOAD768(TRUE, i5[9], i7[9], i436[9])≥NonInfC∧COND_LOAD768(TRUE, i5[9], i7[9], i436[9])≥LOAD768(i5[9], i7[9], -(i436[9], 1))∧(UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥))



    We simplified constraint (106) using rules (III), (IV) which results in the following new constraint:

    (107)    (>(i436[8], 0)=TRUE-(i436[8], 1)=0COND_LOAD768(TRUE, i5[8], i7[8], i436[8])≥NonInfC∧COND_LOAD768(TRUE, i5[8], i7[8], i436[8])≥LOAD768(i5[8], i7[8], -(i436[8], 1))∧(UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥))



    We simplified constraint (107) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (108)    (i436[8] + [-1] ≥ 0∧i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧[(-1)bni_105 + (-1)Bound*bni_105] + [(-1)bni_105]i7[8] ≥ 0∧[(-1)bso_106] ≥ 0)



    We simplified constraint (108) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (109)    (i436[8] + [-1] ≥ 0∧i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧[(-1)bni_105 + (-1)Bound*bni_105] + [(-1)bni_105]i7[8] ≥ 0∧[(-1)bso_106] ≥ 0)



    We simplified constraint (109) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (110)    (i436[8] + [-1] ≥ 0∧i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧[(-1)bni_105 + (-1)Bound*bni_105] + [(-1)bni_105]i7[8] ≥ 0∧[(-1)bso_106] ≥ 0)



    We simplified constraint (110) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (111)    (i436[8] + [-1] ≥ 0∧i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧[(-1)bni_105] = 0∧0 = 0∧[(-1)bni_105 + (-1)Bound*bni_105] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_106] ≥ 0)



    We simplified constraint (111) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (112)    (i436[8] ≥ 0∧i436[8] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧[(-1)bni_105] = 0∧0 = 0∧[(-1)bni_105 + (-1)Bound*bni_105] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_106] ≥ 0)



  • We consider the chain LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8]), COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], -(i436[9], 1)), LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8]) which results in the following constraint:

    (113)    (i7[8]=i7[9]i436[8]=i436[9]i5[8]=i5[9]>(i436[8], 0)=TRUE-(i436[9], 1)=i436[8]1i7[9]=i7[8]1i5[9]=i5[8]1COND_LOAD768(TRUE, i5[9], i7[9], i436[9])≥NonInfC∧COND_LOAD768(TRUE, i5[9], i7[9], i436[9])≥LOAD768(i5[9], i7[9], -(i436[9], 1))∧(UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥))



    We simplified constraint (113) using rules (III), (IV) which results in the following new constraint:

    (114)    (>(i436[8], 0)=TRUECOND_LOAD768(TRUE, i5[8], i7[8], i436[8])≥NonInfC∧COND_LOAD768(TRUE, i5[8], i7[8], i436[8])≥LOAD768(i5[8], i7[8], -(i436[8], 1))∧(UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥))



    We simplified constraint (114) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (115)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧[(-1)bni_105 + (-1)Bound*bni_105] + [(-1)bni_105]i7[8] ≥ 0∧[(-1)bso_106] ≥ 0)



    We simplified constraint (115) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (116)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧[(-1)bni_105 + (-1)Bound*bni_105] + [(-1)bni_105]i7[8] ≥ 0∧[(-1)bso_106] ≥ 0)



    We simplified constraint (116) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (117)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧[(-1)bni_105 + (-1)Bound*bni_105] + [(-1)bni_105]i7[8] ≥ 0∧[(-1)bso_106] ≥ 0)



    We simplified constraint (117) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (118)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧[(-1)bni_105] = 0∧0 = 0∧[(-1)bni_105 + (-1)Bound*bni_105] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_106] ≥ 0)



    We simplified constraint (118) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (119)    (i436[8] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧[(-1)bni_105] = 0∧0 = 0∧[(-1)bni_105 + (-1)Bound*bni_105] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_106] ≥ 0)







For Pair LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8]) the following chains were created:
  • We consider the chain LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8]), COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], -(i436[9], 1)) which results in the following constraint:

    (120)    (i7[8]=i7[9]i436[8]=i436[9]i5[8]=i5[9]>(i436[8], 0)=TRUELOAD768(i5[8], i7[8], i436[8])≥NonInfC∧LOAD768(i5[8], i7[8], i436[8])≥COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])∧(UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥))



    We simplified constraint (120) using rule (IV) which results in the following new constraint:

    (121)    (>(i436[8], 0)=TRUELOAD768(i5[8], i7[8], i436[8])≥NonInfC∧LOAD768(i5[8], i7[8], i436[8])≥COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])∧(UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥))



    We simplified constraint (121) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (122)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥)∧[(-1)bni_107 + (-1)Bound*bni_107] + [(-1)bni_107]i7[8] ≥ 0∧[(-1)bso_108] ≥ 0)



    We simplified constraint (122) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (123)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥)∧[(-1)bni_107 + (-1)Bound*bni_107] + [(-1)bni_107]i7[8] ≥ 0∧[(-1)bso_108] ≥ 0)



    We simplified constraint (123) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (124)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥)∧[(-1)bni_107 + (-1)Bound*bni_107] + [(-1)bni_107]i7[8] ≥ 0∧[(-1)bso_108] ≥ 0)



    We simplified constraint (124) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (125)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥)∧[(-1)bni_107] = 0∧0 = 0∧[(-1)bni_107 + (-1)Bound*bni_107] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_108] ≥ 0)



    We simplified constraint (125) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (126)    (i436[8] ≥ 0 ⇒ (UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥)∧[(-1)bni_107] = 0∧0 = 0∧[(-1)bni_107 + (-1)Bound*bni_107] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_108] ≥ 0)







For Pair COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], -(i605[6], 1)) the following chains were created:
  • We consider the chain LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5]), COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], -(i605[6], 1)), LOAD949(i5[1], i7[1], 0) → LOAD1100(i5[1], i7[1], i7[1]) which results in the following constraint:

    (127)    (i5[5]=i5[6]i7[5]=i7[6]i605[5]=i605[6]>(i605[5], 0)=TRUE-(i605[6], 1)=0i5[6]=i5[1]i7[6]=i7[1]COND_LOAD949(TRUE, i5[6], i7[6], i605[6])≥NonInfC∧COND_LOAD949(TRUE, i5[6], i7[6], i605[6])≥LOAD949(i5[6], i7[6], -(i605[6], 1))∧(UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥))



    We simplified constraint (127) using rules (III), (IV) which results in the following new constraint:

    (128)    (>(i605[5], 0)=TRUE-(i605[5], 1)=0COND_LOAD949(TRUE, i5[5], i7[5], i605[5])≥NonInfC∧COND_LOAD949(TRUE, i5[5], i7[5], i605[5])≥LOAD949(i5[5], i7[5], -(i605[5], 1))∧(UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥))



    We simplified constraint (128) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (129)    (i605[5] + [-1] ≥ 0∧i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧[(-1)bni_109 + (-1)Bound*bni_109] + [(-1)bni_109]i7[5] ≥ 0∧[(-1)bso_110] ≥ 0)



    We simplified constraint (129) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (130)    (i605[5] + [-1] ≥ 0∧i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧[(-1)bni_109 + (-1)Bound*bni_109] + [(-1)bni_109]i7[5] ≥ 0∧[(-1)bso_110] ≥ 0)



    We simplified constraint (130) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (131)    (i605[5] + [-1] ≥ 0∧i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧[(-1)bni_109 + (-1)Bound*bni_109] + [(-1)bni_109]i7[5] ≥ 0∧[(-1)bso_110] ≥ 0)



    We simplified constraint (131) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (132)    (i605[5] + [-1] ≥ 0∧i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧[(-1)bni_109] = 0∧0 = 0∧[(-1)bni_109 + (-1)Bound*bni_109] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_110] ≥ 0)



    We simplified constraint (132) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (133)    (i605[5] ≥ 0∧i605[5] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧[(-1)bni_109] = 0∧0 = 0∧[(-1)bni_109 + (-1)Bound*bni_109] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_110] ≥ 0)



  • We consider the chain LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5]), COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], -(i605[6], 1)), LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5]) which results in the following constraint:

    (134)    (i5[5]=i5[6]i7[5]=i7[6]i605[5]=i605[6]>(i605[5], 0)=TRUEi7[6]=i7[5]1-(i605[6], 1)=i605[5]1i5[6]=i5[5]1COND_LOAD949(TRUE, i5[6], i7[6], i605[6])≥NonInfC∧COND_LOAD949(TRUE, i5[6], i7[6], i605[6])≥LOAD949(i5[6], i7[6], -(i605[6], 1))∧(UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥))



    We simplified constraint (134) using rules (III), (IV) which results in the following new constraint:

    (135)    (>(i605[5], 0)=TRUECOND_LOAD949(TRUE, i5[5], i7[5], i605[5])≥NonInfC∧COND_LOAD949(TRUE, i5[5], i7[5], i605[5])≥LOAD949(i5[5], i7[5], -(i605[5], 1))∧(UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥))



    We simplified constraint (135) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (136)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧[(-1)bni_109 + (-1)Bound*bni_109] + [(-1)bni_109]i7[5] ≥ 0∧[(-1)bso_110] ≥ 0)



    We simplified constraint (136) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (137)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧[(-1)bni_109 + (-1)Bound*bni_109] + [(-1)bni_109]i7[5] ≥ 0∧[(-1)bso_110] ≥ 0)



    We simplified constraint (137) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (138)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧[(-1)bni_109 + (-1)Bound*bni_109] + [(-1)bni_109]i7[5] ≥ 0∧[(-1)bso_110] ≥ 0)



    We simplified constraint (138) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (139)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧[(-1)bni_109] = 0∧0 = 0∧[(-1)bni_109 + (-1)Bound*bni_109] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_110] ≥ 0)



    We simplified constraint (139) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (140)    (i605[5] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧[(-1)bni_109] = 0∧0 = 0∧[(-1)bni_109 + (-1)Bound*bni_109] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_110] ≥ 0)







For Pair LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5]) the following chains were created:
  • We consider the chain LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5]), COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], -(i605[6], 1)) which results in the following constraint:

    (141)    (i5[5]=i5[6]i7[5]=i7[6]i605[5]=i605[6]>(i605[5], 0)=TRUELOAD949(i5[5], i7[5], i605[5])≥NonInfC∧LOAD949(i5[5], i7[5], i605[5])≥COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])∧(UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥))



    We simplified constraint (141) using rule (IV) which results in the following new constraint:

    (142)    (>(i605[5], 0)=TRUELOAD949(i5[5], i7[5], i605[5])≥NonInfC∧LOAD949(i5[5], i7[5], i605[5])≥COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])∧(UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥))



    We simplified constraint (142) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (143)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥)∧[(-1)bni_111 + (-1)Bound*bni_111] + [(-1)bni_111]i7[5] ≥ 0∧[(-1)bso_112] ≥ 0)



    We simplified constraint (143) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (144)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥)∧[(-1)bni_111 + (-1)Bound*bni_111] + [(-1)bni_111]i7[5] ≥ 0∧[(-1)bso_112] ≥ 0)



    We simplified constraint (144) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (145)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥)∧[(-1)bni_111 + (-1)Bound*bni_111] + [(-1)bni_111]i7[5] ≥ 0∧[(-1)bso_112] ≥ 0)



    We simplified constraint (145) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (146)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥)∧[(-1)bni_111] = 0∧0 = 0∧[(-1)bni_111 + (-1)Bound*bni_111] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_112] ≥ 0)



    We simplified constraint (146) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (147)    (i605[5] ≥ 0 ⇒ (UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥)∧[(-1)bni_111] = 0∧0 = 0∧[(-1)bni_111 + (-1)Bound*bni_111] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_112] ≥ 0)







For Pair COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], -(i696[3], 1)) the following chains were created:
  • We consider the chain LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2]), COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], -(i696[3], 1)), LOAD1100(i5[0], i7[0], 0) → LOAD83(i5[0], +(i7[0], 1)) which results in the following constraint:

    (148)    (i5[2]=i5[3]i7[2]=i7[3]i696[2]=i696[3]>(i696[2], 0)=TRUEi7[3]=i7[0]i5[3]=i5[0]-(i696[3], 1)=0COND_LOAD1100(TRUE, i5[3], i7[3], i696[3])≥NonInfC∧COND_LOAD1100(TRUE, i5[3], i7[3], i696[3])≥LOAD1100(i5[3], i7[3], -(i696[3], 1))∧(UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥))



    We simplified constraint (148) using rules (III), (IV) which results in the following new constraint:

    (149)    (>(i696[2], 0)=TRUE-(i696[2], 1)=0COND_LOAD1100(TRUE, i5[2], i7[2], i696[2])≥NonInfC∧COND_LOAD1100(TRUE, i5[2], i7[2], i696[2])≥LOAD1100(i5[2], i7[2], -(i696[2], 1))∧(UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥))



    We simplified constraint (149) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (150)    (i696[2] + [-1] ≥ 0∧i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧[(-1)bni_113 + (-1)Bound*bni_113] + [(-1)bni_113]i7[2] ≥ 0∧[(-1)bso_114] ≥ 0)



    We simplified constraint (150) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (151)    (i696[2] + [-1] ≥ 0∧i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧[(-1)bni_113 + (-1)Bound*bni_113] + [(-1)bni_113]i7[2] ≥ 0∧[(-1)bso_114] ≥ 0)



    We simplified constraint (151) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (152)    (i696[2] + [-1] ≥ 0∧i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧[(-1)bni_113 + (-1)Bound*bni_113] + [(-1)bni_113]i7[2] ≥ 0∧[(-1)bso_114] ≥ 0)



    We simplified constraint (152) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (153)    (i696[2] + [-1] ≥ 0∧i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧[(-1)bni_113] = 0∧0 = 0∧[(-1)bni_113 + (-1)Bound*bni_113] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_114] ≥ 0)



    We simplified constraint (153) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (154)    (i696[2] ≥ 0∧i696[2] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧[(-1)bni_113] = 0∧0 = 0∧[(-1)bni_113 + (-1)Bound*bni_113] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_114] ≥ 0)



  • We consider the chain LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2]), COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], -(i696[3], 1)), LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2]) which results in the following constraint:

    (155)    (i5[2]=i5[3]i7[2]=i7[3]i696[2]=i696[3]>(i696[2], 0)=TRUEi7[3]=i7[2]1-(i696[3], 1)=i696[2]1i5[3]=i5[2]1COND_LOAD1100(TRUE, i5[3], i7[3], i696[3])≥NonInfC∧COND_LOAD1100(TRUE, i5[3], i7[3], i696[3])≥LOAD1100(i5[3], i7[3], -(i696[3], 1))∧(UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥))



    We simplified constraint (155) using rules (III), (IV) which results in the following new constraint:

    (156)    (>(i696[2], 0)=TRUECOND_LOAD1100(TRUE, i5[2], i7[2], i696[2])≥NonInfC∧COND_LOAD1100(TRUE, i5[2], i7[2], i696[2])≥LOAD1100(i5[2], i7[2], -(i696[2], 1))∧(UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥))



    We simplified constraint (156) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (157)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧[(-1)bni_113 + (-1)Bound*bni_113] + [(-1)bni_113]i7[2] ≥ 0∧[(-1)bso_114] ≥ 0)



    We simplified constraint (157) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (158)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧[(-1)bni_113 + (-1)Bound*bni_113] + [(-1)bni_113]i7[2] ≥ 0∧[(-1)bso_114] ≥ 0)



    We simplified constraint (158) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (159)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧[(-1)bni_113 + (-1)Bound*bni_113] + [(-1)bni_113]i7[2] ≥ 0∧[(-1)bso_114] ≥ 0)



    We simplified constraint (159) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (160)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧[(-1)bni_113] = 0∧0 = 0∧[(-1)bni_113 + (-1)Bound*bni_113] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_114] ≥ 0)



    We simplified constraint (160) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (161)    (i696[2] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧[(-1)bni_113] = 0∧0 = 0∧[(-1)bni_113 + (-1)Bound*bni_113] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_114] ≥ 0)







For Pair LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2]) the following chains were created:
  • We consider the chain LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2]), COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], -(i696[3], 1)) which results in the following constraint:

    (162)    (i5[2]=i5[3]i7[2]=i7[3]i696[2]=i696[3]>(i696[2], 0)=TRUELOAD1100(i5[2], i7[2], i696[2])≥NonInfC∧LOAD1100(i5[2], i7[2], i696[2])≥COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])∧(UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥))



    We simplified constraint (162) using rule (IV) which results in the following new constraint:

    (163)    (>(i696[2], 0)=TRUELOAD1100(i5[2], i7[2], i696[2])≥NonInfC∧LOAD1100(i5[2], i7[2], i696[2])≥COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])∧(UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥))



    We simplified constraint (163) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (164)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥)∧[(-1)bni_115 + (-1)Bound*bni_115] + [(-1)bni_115]i7[2] ≥ 0∧[(-1)bso_116] ≥ 0)



    We simplified constraint (164) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (165)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥)∧[(-1)bni_115 + (-1)Bound*bni_115] + [(-1)bni_115]i7[2] ≥ 0∧[(-1)bso_116] ≥ 0)



    We simplified constraint (165) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (166)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥)∧[(-1)bni_115 + (-1)Bound*bni_115] + [(-1)bni_115]i7[2] ≥ 0∧[(-1)bso_116] ≥ 0)



    We simplified constraint (166) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (167)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥)∧[(-1)bni_115] = 0∧0 = 0∧[(-1)bni_115 + (-1)Bound*bni_115] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_116] ≥ 0)



    We simplified constraint (167) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (168)    (i696[2] ≥ 0 ⇒ (UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥)∧[(-1)bni_115] = 0∧0 = 0∧[(-1)bni_115 + (-1)Bound*bni_115] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_116] ≥ 0)







For Pair LOAD949(i5[1], i7[1], 0) → LOAD1100(i5[1], i7[1], i7[1]) the following chains were created:
  • We consider the chain LOAD949(i5[1], i7[1], 0) → LOAD1100(i5[1], i7[1], i7[1]), LOAD1100(i5[0], i7[0], 0) → LOAD83(i5[0], +(i7[0], 1)) which results in the following constraint:

    (169)    (i7[1]=0i5[1]=i5[0]i7[1]=i7[0]LOAD949(i5[1], i7[1], 0)≥NonInfC∧LOAD949(i5[1], i7[1], 0)≥LOAD1100(i5[1], i7[1], i7[1])∧(UIncreasing(LOAD1100(i5[1], i7[1], i7[1])), ≥))



    We simplified constraint (169) using rules (III), (IV) which results in the following new constraint:

    (170)    (LOAD949(i5[1], 0, 0)≥NonInfC∧LOAD949(i5[1], 0, 0)≥LOAD1100(i5[1], 0, 0)∧(UIncreasing(LOAD1100(i5[1], i7[1], i7[1])), ≥))



    We simplified constraint (170) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (171)    ((UIncreasing(LOAD1100(i5[1], i7[1], i7[1])), ≥)∧[(-1)bso_118] ≥ 0)



    We simplified constraint (171) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (172)    ((UIncreasing(LOAD1100(i5[1], i7[1], i7[1])), ≥)∧[(-1)bso_118] ≥ 0)



    We simplified constraint (172) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (173)    ((UIncreasing(LOAD1100(i5[1], i7[1], i7[1])), ≥)∧[(-1)bso_118] ≥ 0)



    We simplified constraint (173) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (174)    ((UIncreasing(LOAD1100(i5[1], i7[1], i7[1])), ≥)∧0 = 0∧[(-1)bso_118] ≥ 0)



  • We consider the chain LOAD949(i5[1], i7[1], 0) → LOAD1100(i5[1], i7[1], i7[1]), LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2]) which results in the following constraint:

    (175)    (i5[1]=i5[2]i7[1]=i7[2]i7[1]=i696[2]LOAD949(i5[1], i7[1], 0)≥NonInfC∧LOAD949(i5[1], i7[1], 0)≥LOAD1100(i5[1], i7[1], i7[1])∧(UIncreasing(LOAD1100(i5[1], i7[1], i7[1])), ≥))



    We simplified constraint (175) using rule (IV) which results in the following new constraint:

    (176)    (LOAD949(i5[1], i7[1], 0)≥NonInfC∧LOAD949(i5[1], i7[1], 0)≥LOAD1100(i5[1], i7[1], i7[1])∧(UIncreasing(LOAD1100(i5[1], i7[1], i7[1])), ≥))



    We simplified constraint (176) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (177)    ((UIncreasing(LOAD1100(i5[1], i7[1], i7[1])), ≥)∧[(-1)bso_118] ≥ 0)



    We simplified constraint (177) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (178)    ((UIncreasing(LOAD1100(i5[1], i7[1], i7[1])), ≥)∧[(-1)bso_118] ≥ 0)



    We simplified constraint (178) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (179)    ((UIncreasing(LOAD1100(i5[1], i7[1], i7[1])), ≥)∧[(-1)bso_118] ≥ 0)



    We simplified constraint (179) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (180)    ((UIncreasing(LOAD1100(i5[1], i7[1], i7[1])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_118] ≥ 0)







For Pair LOAD768(i5[4], i7[4], 0) → LOAD949(i5[4], i7[4], i7[4]) the following chains were created:
  • We consider the chain LOAD768(i5[4], i7[4], 0) → LOAD949(i5[4], i7[4], i7[4]), LOAD949(i5[1], i7[1], 0) → LOAD1100(i5[1], i7[1], i7[1]) which results in the following constraint:

    (181)    (i5[4]=i5[1]i7[4]=0i7[4]=i7[1]LOAD768(i5[4], i7[4], 0)≥NonInfC∧LOAD768(i5[4], i7[4], 0)≥LOAD949(i5[4], i7[4], i7[4])∧(UIncreasing(LOAD949(i5[4], i7[4], i7[4])), ≥))



    We simplified constraint (181) using rules (III), (IV) which results in the following new constraint:

    (182)    (LOAD768(i5[4], 0, 0)≥NonInfC∧LOAD768(i5[4], 0, 0)≥LOAD949(i5[4], 0, 0)∧(UIncreasing(LOAD949(i5[4], i7[4], i7[4])), ≥))



    We simplified constraint (182) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (183)    ((UIncreasing(LOAD949(i5[4], i7[4], i7[4])), ≥)∧[(-1)bso_120] ≥ 0)



    We simplified constraint (183) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (184)    ((UIncreasing(LOAD949(i5[4], i7[4], i7[4])), ≥)∧[(-1)bso_120] ≥ 0)



    We simplified constraint (184) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (185)    ((UIncreasing(LOAD949(i5[4], i7[4], i7[4])), ≥)∧[(-1)bso_120] ≥ 0)



    We simplified constraint (185) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (186)    ((UIncreasing(LOAD949(i5[4], i7[4], i7[4])), ≥)∧0 = 0∧[(-1)bso_120] ≥ 0)



  • We consider the chain LOAD768(i5[4], i7[4], 0) → LOAD949(i5[4], i7[4], i7[4]), LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5]) which results in the following constraint:

    (187)    (i7[4]=i7[5]i7[4]=i605[5]i5[4]=i5[5]LOAD768(i5[4], i7[4], 0)≥NonInfC∧LOAD768(i5[4], i7[4], 0)≥LOAD949(i5[4], i7[4], i7[4])∧(UIncreasing(LOAD949(i5[4], i7[4], i7[4])), ≥))



    We simplified constraint (187) using rule (IV) which results in the following new constraint:

    (188)    (LOAD768(i5[4], i7[4], 0)≥NonInfC∧LOAD768(i5[4], i7[4], 0)≥LOAD949(i5[4], i7[4], i7[4])∧(UIncreasing(LOAD949(i5[4], i7[4], i7[4])), ≥))



    We simplified constraint (188) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (189)    ((UIncreasing(LOAD949(i5[4], i7[4], i7[4])), ≥)∧[(-1)bso_120] ≥ 0)



    We simplified constraint (189) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (190)    ((UIncreasing(LOAD949(i5[4], i7[4], i7[4])), ≥)∧[(-1)bso_120] ≥ 0)



    We simplified constraint (190) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (191)    ((UIncreasing(LOAD949(i5[4], i7[4], i7[4])), ≥)∧[(-1)bso_120] ≥ 0)



    We simplified constraint (191) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (192)    ((UIncreasing(LOAD949(i5[4], i7[4], i7[4])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_120] ≥ 0)







For Pair LOAD608(i5[7], i7[7], 0) → LOAD768(i5[7], i7[7], i7[7]) the following chains were created:
  • We consider the chain LOAD608(i5[7], i7[7], 0) → LOAD768(i5[7], i7[7], i7[7]), LOAD768(i5[4], i7[4], 0) → LOAD949(i5[4], i7[4], i7[4]) which results in the following constraint:

    (193)    (i7[7]=0i7[7]=i7[4]i5[7]=i5[4]LOAD608(i5[7], i7[7], 0)≥NonInfC∧LOAD608(i5[7], i7[7], 0)≥LOAD768(i5[7], i7[7], i7[7])∧(UIncreasing(LOAD768(i5[7], i7[7], i7[7])), ≥))



    We simplified constraint (193) using rules (III), (IV) which results in the following new constraint:

    (194)    (LOAD608(i5[7], 0, 0)≥NonInfC∧LOAD608(i5[7], 0, 0)≥LOAD768(i5[7], 0, 0)∧(UIncreasing(LOAD768(i5[7], i7[7], i7[7])), ≥))



    We simplified constraint (194) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (195)    ((UIncreasing(LOAD768(i5[7], i7[7], i7[7])), ≥)∧[(-1)bso_122] ≥ 0)



    We simplified constraint (195) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (196)    ((UIncreasing(LOAD768(i5[7], i7[7], i7[7])), ≥)∧[(-1)bso_122] ≥ 0)



    We simplified constraint (196) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (197)    ((UIncreasing(LOAD768(i5[7], i7[7], i7[7])), ≥)∧[(-1)bso_122] ≥ 0)



    We simplified constraint (197) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (198)    ((UIncreasing(LOAD768(i5[7], i7[7], i7[7])), ≥)∧0 = 0∧[(-1)bso_122] ≥ 0)



  • We consider the chain LOAD608(i5[7], i7[7], 0) → LOAD768(i5[7], i7[7], i7[7]), LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8]) which results in the following constraint:

    (199)    (i5[7]=i5[8]i7[7]=i436[8]i7[7]=i7[8]LOAD608(i5[7], i7[7], 0)≥NonInfC∧LOAD608(i5[7], i7[7], 0)≥LOAD768(i5[7], i7[7], i7[7])∧(UIncreasing(LOAD768(i5[7], i7[7], i7[7])), ≥))



    We simplified constraint (199) using rule (IV) which results in the following new constraint:

    (200)    (LOAD608(i5[7], i7[7], 0)≥NonInfC∧LOAD608(i5[7], i7[7], 0)≥LOAD768(i5[7], i7[7], i7[7])∧(UIncreasing(LOAD768(i5[7], i7[7], i7[7])), ≥))



    We simplified constraint (200) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (201)    ((UIncreasing(LOAD768(i5[7], i7[7], i7[7])), ≥)∧[(-1)bso_122] ≥ 0)



    We simplified constraint (201) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (202)    ((UIncreasing(LOAD768(i5[7], i7[7], i7[7])), ≥)∧[(-1)bso_122] ≥ 0)



    We simplified constraint (202) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (203)    ((UIncreasing(LOAD768(i5[7], i7[7], i7[7])), ≥)∧[(-1)bso_122] ≥ 0)



    We simplified constraint (203) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (204)    ((UIncreasing(LOAD768(i5[7], i7[7], i7[7])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_122] ≥ 0)







For Pair LOAD484(i5[10], i7[10], 0) → LOAD608(i5[10], i7[10], i7[10]) the following chains were created:
  • We consider the chain LOAD484(i5[10], i7[10], 0) → LOAD608(i5[10], i7[10], i7[10]), LOAD608(i5[7], i7[7], 0) → LOAD768(i5[7], i7[7], i7[7]) which results in the following constraint:

    (205)    (i5[10]=i5[7]i7[10]=i7[7]i7[10]=0LOAD484(i5[10], i7[10], 0)≥NonInfC∧LOAD484(i5[10], i7[10], 0)≥LOAD608(i5[10], i7[10], i7[10])∧(UIncreasing(LOAD608(i5[10], i7[10], i7[10])), ≥))



    We simplified constraint (205) using rules (III), (IV) which results in the following new constraint:

    (206)    (LOAD484(i5[10], 0, 0)≥NonInfC∧LOAD484(i5[10], 0, 0)≥LOAD608(i5[10], 0, 0)∧(UIncreasing(LOAD608(i5[10], i7[10], i7[10])), ≥))



    We simplified constraint (206) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (207)    ((UIncreasing(LOAD608(i5[10], i7[10], i7[10])), ≥)∧[(-1)bso_124] ≥ 0)



    We simplified constraint (207) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (208)    ((UIncreasing(LOAD608(i5[10], i7[10], i7[10])), ≥)∧[(-1)bso_124] ≥ 0)



    We simplified constraint (208) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (209)    ((UIncreasing(LOAD608(i5[10], i7[10], i7[10])), ≥)∧[(-1)bso_124] ≥ 0)



    We simplified constraint (209) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (210)    ((UIncreasing(LOAD608(i5[10], i7[10], i7[10])), ≥)∧0 = 0∧[(-1)bso_124] ≥ 0)



  • We consider the chain LOAD484(i5[10], i7[10], 0) → LOAD608(i5[10], i7[10], i7[10]), LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11]) which results in the following constraint:

    (211)    (i7[10]=i7[11]i5[10]=i5[11]i7[10]=i296[11]LOAD484(i5[10], i7[10], 0)≥NonInfC∧LOAD484(i5[10], i7[10], 0)≥LOAD608(i5[10], i7[10], i7[10])∧(UIncreasing(LOAD608(i5[10], i7[10], i7[10])), ≥))



    We simplified constraint (211) using rule (IV) which results in the following new constraint:

    (212)    (LOAD484(i5[10], i7[10], 0)≥NonInfC∧LOAD484(i5[10], i7[10], 0)≥LOAD608(i5[10], i7[10], i7[10])∧(UIncreasing(LOAD608(i5[10], i7[10], i7[10])), ≥))



    We simplified constraint (212) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (213)    ((UIncreasing(LOAD608(i5[10], i7[10], i7[10])), ≥)∧[(-1)bso_124] ≥ 0)



    We simplified constraint (213) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (214)    ((UIncreasing(LOAD608(i5[10], i7[10], i7[10])), ≥)∧[(-1)bso_124] ≥ 0)



    We simplified constraint (214) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (215)    ((UIncreasing(LOAD608(i5[10], i7[10], i7[10])), ≥)∧[(-1)bso_124] ≥ 0)



    We simplified constraint (215) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (216)    ((UIncreasing(LOAD608(i5[10], i7[10], i7[10])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_124] ≥ 0)







For Pair LOAD363(i5[13], i7[13], 0) → LOAD484(i5[13], i7[13], i7[13]) the following chains were created:
  • We consider the chain LOAD363(i5[13], i7[13], 0) → LOAD484(i5[13], i7[13], i7[13]), LOAD484(i5[10], i7[10], 0) → LOAD608(i5[10], i7[10], i7[10]) which results in the following constraint:

    (217)    (i5[13]=i5[10]i7[13]=0i7[13]=i7[10]LOAD363(i5[13], i7[13], 0)≥NonInfC∧LOAD363(i5[13], i7[13], 0)≥LOAD484(i5[13], i7[13], i7[13])∧(UIncreasing(LOAD484(i5[13], i7[13], i7[13])), ≥))



    We simplified constraint (217) using rules (III), (IV) which results in the following new constraint:

    (218)    (LOAD363(i5[13], 0, 0)≥NonInfC∧LOAD363(i5[13], 0, 0)≥LOAD484(i5[13], 0, 0)∧(UIncreasing(LOAD484(i5[13], i7[13], i7[13])), ≥))



    We simplified constraint (218) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (219)    ((UIncreasing(LOAD484(i5[13], i7[13], i7[13])), ≥)∧[(-1)bso_126] ≥ 0)



    We simplified constraint (219) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (220)    ((UIncreasing(LOAD484(i5[13], i7[13], i7[13])), ≥)∧[(-1)bso_126] ≥ 0)



    We simplified constraint (220) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (221)    ((UIncreasing(LOAD484(i5[13], i7[13], i7[13])), ≥)∧[(-1)bso_126] ≥ 0)



    We simplified constraint (221) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (222)    ((UIncreasing(LOAD484(i5[13], i7[13], i7[13])), ≥)∧0 = 0∧[(-1)bso_126] ≥ 0)



  • We consider the chain LOAD363(i5[13], i7[13], 0) → LOAD484(i5[13], i7[13], i7[13]), LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14]) which results in the following constraint:

    (223)    (i7[13]=i187[14]i5[13]=i5[14]i7[13]=i7[14]LOAD363(i5[13], i7[13], 0)≥NonInfC∧LOAD363(i5[13], i7[13], 0)≥LOAD484(i5[13], i7[13], i7[13])∧(UIncreasing(LOAD484(i5[13], i7[13], i7[13])), ≥))



    We simplified constraint (223) using rule (IV) which results in the following new constraint:

    (224)    (LOAD363(i5[13], i7[13], 0)≥NonInfC∧LOAD363(i5[13], i7[13], 0)≥LOAD484(i5[13], i7[13], i7[13])∧(UIncreasing(LOAD484(i5[13], i7[13], i7[13])), ≥))



    We simplified constraint (224) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (225)    ((UIncreasing(LOAD484(i5[13], i7[13], i7[13])), ≥)∧[(-1)bso_126] ≥ 0)



    We simplified constraint (225) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (226)    ((UIncreasing(LOAD484(i5[13], i7[13], i7[13])), ≥)∧[(-1)bso_126] ≥ 0)



    We simplified constraint (226) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (227)    ((UIncreasing(LOAD484(i5[13], i7[13], i7[13])), ≥)∧[(-1)bso_126] ≥ 0)



    We simplified constraint (227) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (228)    ((UIncreasing(LOAD484(i5[13], i7[13], i7[13])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_126] ≥ 0)







For Pair LOAD258(i5[16], i7[16], 0) → LOAD363(i5[16], i7[16], i7[16]) the following chains were created:
  • We consider the chain LOAD258(i5[16], i7[16], 0) → LOAD363(i5[16], i7[16], i7[16]), LOAD363(i5[13], i7[13], 0) → LOAD484(i5[13], i7[13], i7[13]) which results in the following constraint:

    (229)    (i7[16]=i7[13]i7[16]=0i5[16]=i5[13]LOAD258(i5[16], i7[16], 0)≥NonInfC∧LOAD258(i5[16], i7[16], 0)≥LOAD363(i5[16], i7[16], i7[16])∧(UIncreasing(LOAD363(i5[16], i7[16], i7[16])), ≥))



    We simplified constraint (229) using rules (III), (IV) which results in the following new constraint:

    (230)    (LOAD258(i5[16], 0, 0)≥NonInfC∧LOAD258(i5[16], 0, 0)≥LOAD363(i5[16], 0, 0)∧(UIncreasing(LOAD363(i5[16], i7[16], i7[16])), ≥))



    We simplified constraint (230) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (231)    ((UIncreasing(LOAD363(i5[16], i7[16], i7[16])), ≥)∧[(-1)bso_128] ≥ 0)



    We simplified constraint (231) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (232)    ((UIncreasing(LOAD363(i5[16], i7[16], i7[16])), ≥)∧[(-1)bso_128] ≥ 0)



    We simplified constraint (232) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (233)    ((UIncreasing(LOAD363(i5[16], i7[16], i7[16])), ≥)∧[(-1)bso_128] ≥ 0)



    We simplified constraint (233) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (234)    ((UIncreasing(LOAD363(i5[16], i7[16], i7[16])), ≥)∧0 = 0∧[(-1)bso_128] ≥ 0)



  • We consider the chain LOAD258(i5[16], i7[16], 0) → LOAD363(i5[16], i7[16], i7[16]), LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17]) which results in the following constraint:

    (235)    (i7[16]=i104[17]i5[16]=i5[17]i7[16]=i7[17]LOAD258(i5[16], i7[16], 0)≥NonInfC∧LOAD258(i5[16], i7[16], 0)≥LOAD363(i5[16], i7[16], i7[16])∧(UIncreasing(LOAD363(i5[16], i7[16], i7[16])), ≥))



    We simplified constraint (235) using rule (IV) which results in the following new constraint:

    (236)    (LOAD258(i5[16], i7[16], 0)≥NonInfC∧LOAD258(i5[16], i7[16], 0)≥LOAD363(i5[16], i7[16], i7[16])∧(UIncreasing(LOAD363(i5[16], i7[16], i7[16])), ≥))



    We simplified constraint (236) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (237)    ((UIncreasing(LOAD363(i5[16], i7[16], i7[16])), ≥)∧[(-1)bso_128] ≥ 0)



    We simplified constraint (237) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (238)    ((UIncreasing(LOAD363(i5[16], i7[16], i7[16])), ≥)∧[(-1)bso_128] ≥ 0)



    We simplified constraint (238) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (239)    ((UIncreasing(LOAD363(i5[16], i7[16], i7[16])), ≥)∧[(-1)bso_128] ≥ 0)



    We simplified constraint (239) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (240)    ((UIncreasing(LOAD363(i5[16], i7[16], i7[16])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_128] ≥ 0)







For Pair LOAD175(i5[19], i7[19], 0) → LOAD258(i5[19], i7[19], i7[19]) the following chains were created:
  • We consider the chain LOAD175(i5[19], i7[19], 0) → LOAD258(i5[19], i7[19], i7[19]), LOAD258(i5[16], i7[16], 0) → LOAD363(i5[16], i7[16], i7[16]) which results in the following constraint:

    (241)    (i7[19]=0i5[19]=i5[16]i7[19]=i7[16]LOAD175(i5[19], i7[19], 0)≥NonInfC∧LOAD175(i5[19], i7[19], 0)≥LOAD258(i5[19], i7[19], i7[19])∧(UIncreasing(LOAD258(i5[19], i7[19], i7[19])), ≥))



    We simplified constraint (241) using rules (III), (IV) which results in the following new constraint:

    (242)    (LOAD175(i5[19], 0, 0)≥NonInfC∧LOAD175(i5[19], 0, 0)≥LOAD258(i5[19], 0, 0)∧(UIncreasing(LOAD258(i5[19], i7[19], i7[19])), ≥))



    We simplified constraint (242) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (243)    ((UIncreasing(LOAD258(i5[19], i7[19], i7[19])), ≥)∧[(-1)bso_130] ≥ 0)



    We simplified constraint (243) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (244)    ((UIncreasing(LOAD258(i5[19], i7[19], i7[19])), ≥)∧[(-1)bso_130] ≥ 0)



    We simplified constraint (244) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (245)    ((UIncreasing(LOAD258(i5[19], i7[19], i7[19])), ≥)∧[(-1)bso_130] ≥ 0)



    We simplified constraint (245) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (246)    ((UIncreasing(LOAD258(i5[19], i7[19], i7[19])), ≥)∧0 = 0∧[(-1)bso_130] ≥ 0)



  • We consider the chain LOAD175(i5[19], i7[19], 0) → LOAD258(i5[19], i7[19], i7[19]), LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20]) which results in the following constraint:

    (247)    (i7[19]=i49[20]i7[19]=i7[20]i5[19]=i5[20]LOAD175(i5[19], i7[19], 0)≥NonInfC∧LOAD175(i5[19], i7[19], 0)≥LOAD258(i5[19], i7[19], i7[19])∧(UIncreasing(LOAD258(i5[19], i7[19], i7[19])), ≥))



    We simplified constraint (247) using rule (IV) which results in the following new constraint:

    (248)    (LOAD175(i5[19], i7[19], 0)≥NonInfC∧LOAD175(i5[19], i7[19], 0)≥LOAD258(i5[19], i7[19], i7[19])∧(UIncreasing(LOAD258(i5[19], i7[19], i7[19])), ≥))



    We simplified constraint (248) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (249)    ((UIncreasing(LOAD258(i5[19], i7[19], i7[19])), ≥)∧[(-1)bso_130] ≥ 0)



    We simplified constraint (249) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (250)    ((UIncreasing(LOAD258(i5[19], i7[19], i7[19])), ≥)∧[(-1)bso_130] ≥ 0)



    We simplified constraint (250) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (251)    ((UIncreasing(LOAD258(i5[19], i7[19], i7[19])), ≥)∧[(-1)bso_130] ≥ 0)



    We simplified constraint (251) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (252)    ((UIncreasing(LOAD258(i5[19], i7[19], i7[19])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_130] ≥ 0)







For Pair COND_LOAD83(TRUE, i5[23], i7[23]) → LOAD175(i5[23], i7[23], i7[23]) the following chains were created:
  • We consider the chain COND_LOAD83(TRUE, i5[23], i7[23]) → LOAD175(i5[23], i7[23], i7[23]), LOAD175(i5[19], i7[19], 0) → LOAD258(i5[19], i7[19], i7[19]) which results in the following constraint:

    (253)    (i5[23]=i5[19]i7[23]=i7[19]i7[23]=0COND_LOAD83(TRUE, i5[23], i7[23])≥NonInfC∧COND_LOAD83(TRUE, i5[23], i7[23])≥LOAD175(i5[23], i7[23], i7[23])∧(UIncreasing(LOAD175(i5[23], i7[23], i7[23])), ≥))



    We simplified constraint (253) using rules (III), (IV) which results in the following new constraint:

    (254)    (COND_LOAD83(TRUE, i5[23], 0)≥NonInfC∧COND_LOAD83(TRUE, i5[23], 0)≥LOAD175(i5[23], 0, 0)∧(UIncreasing(LOAD175(i5[23], i7[23], i7[23])), ≥))



    We simplified constraint (254) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (255)    ((UIncreasing(LOAD175(i5[23], i7[23], i7[23])), ≥)∧[(-1)bso_132] ≥ 0)



    We simplified constraint (255) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (256)    ((UIncreasing(LOAD175(i5[23], i7[23], i7[23])), ≥)∧[(-1)bso_132] ≥ 0)



    We simplified constraint (256) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (257)    ((UIncreasing(LOAD175(i5[23], i7[23], i7[23])), ≥)∧[(-1)bso_132] ≥ 0)



    We simplified constraint (257) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (258)    ((UIncreasing(LOAD175(i5[23], i7[23], i7[23])), ≥)∧0 = 0∧[(-1)bso_132] ≥ 0)



  • We consider the chain COND_LOAD83(TRUE, i5[23], i7[23]) → LOAD175(i5[23], i7[23], i7[23]), LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26]) which results in the following constraint:

    (259)    (i7[23]=i7[26]i5[23]=i5[26]i7[23]=i20[26]COND_LOAD83(TRUE, i5[23], i7[23])≥NonInfC∧COND_LOAD83(TRUE, i5[23], i7[23])≥LOAD175(i5[23], i7[23], i7[23])∧(UIncreasing(LOAD175(i5[23], i7[23], i7[23])), ≥))



    We simplified constraint (259) using rule (IV) which results in the following new constraint:

    (260)    (COND_LOAD83(TRUE, i5[23], i7[23])≥NonInfC∧COND_LOAD83(TRUE, i5[23], i7[23])≥LOAD175(i5[23], i7[23], i7[23])∧(UIncreasing(LOAD175(i5[23], i7[23], i7[23])), ≥))



    We simplified constraint (260) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (261)    ((UIncreasing(LOAD175(i5[23], i7[23], i7[23])), ≥)∧[(-1)bso_132] ≥ 0)



    We simplified constraint (261) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (262)    ((UIncreasing(LOAD175(i5[23], i7[23], i7[23])), ≥)∧[(-1)bso_132] ≥ 0)



    We simplified constraint (262) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (263)    ((UIncreasing(LOAD175(i5[23], i7[23], i7[23])), ≥)∧[(-1)bso_132] ≥ 0)



    We simplified constraint (263) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (264)    ((UIncreasing(LOAD175(i5[23], i7[23], i7[23])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_132] ≥ 0)







For Pair LOAD83(i5[22], i7[22]) → COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22]) the following chains were created:
  • We consider the chain LOAD83(i5[22], i7[22]) → COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22]), COND_LOAD83(TRUE, i5[23], i7[23]) → LOAD175(i5[23], i7[23], i7[23]) which results in the following constraint:

    (265)    (i5[22]=i5[23]&&(>(i7[22], 0), <(i7[22], 100))=TRUEi7[22]=i7[23]LOAD83(i5[22], i7[22])≥NonInfC∧LOAD83(i5[22], i7[22])≥COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22])∧(UIncreasing(COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22])), ≥))



    We simplified constraint (265) using rules (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (266)    (>(i7[22], 0)=TRUE<(i7[22], 100)=TRUELOAD83(i5[22], i7[22])≥NonInfC∧LOAD83(i5[22], i7[22])≥COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22])∧(UIncreasing(COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22])), ≥))



    We simplified constraint (266) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (267)    (i7[22] + [-1] ≥ 0∧[99] + [-1]i7[22] ≥ 0 ⇒ (UIncreasing(COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22])), ≥)∧[(-1)bni_133 + (-1)Bound*bni_133] + [(-1)bni_133]i7[22] ≥ 0∧[(-1)bso_134] ≥ 0)



    We simplified constraint (267) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (268)    (i7[22] + [-1] ≥ 0∧[99] + [-1]i7[22] ≥ 0 ⇒ (UIncreasing(COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22])), ≥)∧[(-1)bni_133 + (-1)Bound*bni_133] + [(-1)bni_133]i7[22] ≥ 0∧[(-1)bso_134] ≥ 0)



    We simplified constraint (268) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (269)    (i7[22] + [-1] ≥ 0∧[99] + [-1]i7[22] ≥ 0 ⇒ (UIncreasing(COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22])), ≥)∧[(-1)bni_133 + (-1)Bound*bni_133] + [(-1)bni_133]i7[22] ≥ 0∧[(-1)bso_134] ≥ 0)



    We simplified constraint (269) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (270)    (i7[22] + [-1] ≥ 0∧[99] + [-1]i7[22] ≥ 0 ⇒ (UIncreasing(COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22])), ≥)∧0 = 0∧[(-1)bni_133 + (-1)Bound*bni_133] + [(-1)bni_133]i7[22] ≥ 0∧0 = 0∧[(-1)bso_134] ≥ 0)



    We simplified constraint (270) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (271)    (i7[22] ≥ 0∧[98] + [-1]i7[22] ≥ 0 ⇒ (UIncreasing(COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22])), ≥)∧0 = 0∧[(-2)bni_133 + (-1)Bound*bni_133] + [(-1)bni_133]i7[22] ≥ 0∧0 = 0∧[(-1)bso_134] ≥ 0)







For Pair LOAD1100(i5[0], i7[0], 0) → LOAD83(i5[0], +(i7[0], 1)) the following chains were created:
  • We consider the chain LOAD949(i5[1], i7[1], 0) → LOAD1100(i5[1], i7[1], i7[1]), LOAD1100(i5[0], i7[0], 0) → LOAD83(i5[0], +(i7[0], 1)), LOAD83(i5[22], i7[22]) → COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22]) which results in the following constraint:

    (272)    (i7[1]=0i5[1]=i5[0]i7[1]=i7[0]i5[0]=i5[22]+(i7[0], 1)=i7[22]LOAD1100(i5[0], i7[0], 0)≥NonInfC∧LOAD1100(i5[0], i7[0], 0)≥LOAD83(i5[0], +(i7[0], 1))∧(UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥))



    We simplified constraint (272) using rules (III), (IV) which results in the following new constraint:

    (273)    (LOAD1100(i5[1], 0, 0)≥NonInfC∧LOAD1100(i5[1], 0, 0)≥LOAD83(i5[1], +(0, 1))∧(UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥))



    We simplified constraint (273) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (274)    ((UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥)∧[1 + (-1)bso_136] ≥ 0)



    We simplified constraint (274) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (275)    ((UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥)∧[1 + (-1)bso_136] ≥ 0)



    We simplified constraint (275) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (276)    ((UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥)∧[1 + (-1)bso_136] ≥ 0)



    We simplified constraint (276) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (277)    ((UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥)∧0 = 0∧[1 + (-1)bso_136] ≥ 0)



  • We consider the chain COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], -(i696[3], 1)), LOAD1100(i5[0], i7[0], 0) → LOAD83(i5[0], +(i7[0], 1)), LOAD83(i5[22], i7[22]) → COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22]) which results in the following constraint:

    (278)    (i7[3]=i7[0]i5[3]=i5[0]-(i696[3], 1)=0i5[0]=i5[22]+(i7[0], 1)=i7[22]LOAD1100(i5[0], i7[0], 0)≥NonInfC∧LOAD1100(i5[0], i7[0], 0)≥LOAD83(i5[0], +(i7[0], 1))∧(UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥))



    We simplified constraint (278) using rules (III), (IV) which results in the following new constraint:

    (279)    (-(i696[3], 1)=0LOAD1100(i5[3], i7[3], 0)≥NonInfC∧LOAD1100(i5[3], i7[3], 0)≥LOAD83(i5[3], +(i7[3], 1))∧(UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥))



    We simplified constraint (279) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (280)    (i696[3] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥)∧0 ≥ 0∧[1 + (-1)bso_136] ≥ 0)



    We simplified constraint (280) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (281)    (i696[3] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥)∧0 ≥ 0∧[1 + (-1)bso_136] ≥ 0)



    We simplified constraint (281) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (282)    (i696[3] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥)∧0 ≥ 0∧[1 + (-1)bso_136] ≥ 0)



    We simplified constraint (282) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (283)    (i696[3] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥)∧0 = 0∧0 = 0∧0 ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_136] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], -(i20[27], 1))
    • (i20[26] ≥ 0∧i20[26] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧[(-1)bni_85] = 0∧0 = 0∧[(-1)bni_85 + (-1)Bound*bni_85] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_86] ≥ 0)
    • (i20[26] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧[(-1)bni_85] = 0∧0 = 0∧[(-1)bni_85 + (-1)Bound*bni_85] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_86] ≥ 0)

  • LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])
    • (i20[26] ≥ 0 ⇒ (UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥)∧[(-1)bni_87] = 0∧0 = 0∧[(-1)bni_87 + (-1)Bound*bni_87] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_88] ≥ 0)

  • COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], -(i49[21], 1))
    • (i49[20] ≥ 0∧i49[20] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧[(-1)bni_89] = 0∧0 = 0∧[(-1)bni_89 + (-1)Bound*bni_89] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_90] ≥ 0)
    • (i49[20] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧[(-1)bni_89] = 0∧0 = 0∧[(-1)bni_89 + (-1)Bound*bni_89] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_90] ≥ 0)

  • LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])
    • (i49[20] ≥ 0 ⇒ (UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥)∧[(-1)bni_91] = 0∧0 = 0∧[(-1)bni_91 + (-1)Bound*bni_91] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_92] ≥ 0)

  • COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], -(i104[18], 1))
    • (i104[17] ≥ 0∧i104[17] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧[(-1)bni_93] = 0∧0 = 0∧[(-1)bni_93 + (-1)Bound*bni_93] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_94] ≥ 0)
    • (i104[17] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧[(-1)bni_93] = 0∧0 = 0∧[(-1)bni_93 + (-1)Bound*bni_93] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_94] ≥ 0)

  • LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])
    • (i104[17] ≥ 0 ⇒ (UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥)∧[(-1)bni_95] = 0∧0 = 0∧[(-1)bni_95 + (-1)Bound*bni_95] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_96] ≥ 0)

  • COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], -(i187[15], 1))
    • (i187[14] ≥ 0∧i187[14] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧[(-1)bni_97] = 0∧0 = 0∧[(-1)bni_97 + (-1)Bound*bni_97] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_98] ≥ 0)
    • (i187[14] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧[(-1)bni_97] = 0∧0 = 0∧[(-1)bni_97 + (-1)Bound*bni_97] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_98] ≥ 0)

  • LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])
    • (i187[14] ≥ 0 ⇒ (UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥)∧[(-1)bni_99] = 0∧0 = 0∧[(-1)bni_99 + (-1)Bound*bni_99] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_100] ≥ 0)

  • COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], -(i296[12], 1))
    • (i296[11] ≥ 0∧i296[11] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧[(-1)bni_101] = 0∧0 = 0∧[(-1)bni_101 + (-1)Bound*bni_101] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_102] ≥ 0)
    • (i296[11] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧[(-1)bni_101] = 0∧0 = 0∧[(-1)bni_101 + (-1)Bound*bni_101] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_102] ≥ 0)

  • LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])
    • (i296[11] ≥ 0 ⇒ (UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥)∧[(-1)bni_103] = 0∧0 = 0∧[(-1)bni_103 + (-1)Bound*bni_103] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_104] ≥ 0)

  • COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], -(i436[9], 1))
    • (i436[8] ≥ 0∧i436[8] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧[(-1)bni_105] = 0∧0 = 0∧[(-1)bni_105 + (-1)Bound*bni_105] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_106] ≥ 0)
    • (i436[8] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧[(-1)bni_105] = 0∧0 = 0∧[(-1)bni_105 + (-1)Bound*bni_105] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_106] ≥ 0)

  • LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])
    • (i436[8] ≥ 0 ⇒ (UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥)∧[(-1)bni_107] = 0∧0 = 0∧[(-1)bni_107 + (-1)Bound*bni_107] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_108] ≥ 0)

  • COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], -(i605[6], 1))
    • (i605[5] ≥ 0∧i605[5] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧[(-1)bni_109] = 0∧0 = 0∧[(-1)bni_109 + (-1)Bound*bni_109] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_110] ≥ 0)
    • (i605[5] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧[(-1)bni_109] = 0∧0 = 0∧[(-1)bni_109 + (-1)Bound*bni_109] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_110] ≥ 0)

  • LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])
    • (i605[5] ≥ 0 ⇒ (UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥)∧[(-1)bni_111] = 0∧0 = 0∧[(-1)bni_111 + (-1)Bound*bni_111] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_112] ≥ 0)

  • COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], -(i696[3], 1))
    • (i696[2] ≥ 0∧i696[2] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧[(-1)bni_113] = 0∧0 = 0∧[(-1)bni_113 + (-1)Bound*bni_113] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_114] ≥ 0)
    • (i696[2] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧[(-1)bni_113] = 0∧0 = 0∧[(-1)bni_113 + (-1)Bound*bni_113] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_114] ≥ 0)

  • LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])
    • (i696[2] ≥ 0 ⇒ (UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥)∧[(-1)bni_115] = 0∧0 = 0∧[(-1)bni_115 + (-1)Bound*bni_115] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_116] ≥ 0)

  • LOAD949(i5[1], i7[1], 0) → LOAD1100(i5[1], i7[1], i7[1])
    • ((UIncreasing(LOAD1100(i5[1], i7[1], i7[1])), ≥)∧0 = 0∧[(-1)bso_118] ≥ 0)
    • ((UIncreasing(LOAD1100(i5[1], i7[1], i7[1])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_118] ≥ 0)

  • LOAD768(i5[4], i7[4], 0) → LOAD949(i5[4], i7[4], i7[4])
    • ((UIncreasing(LOAD949(i5[4], i7[4], i7[4])), ≥)∧0 = 0∧[(-1)bso_120] ≥ 0)
    • ((UIncreasing(LOAD949(i5[4], i7[4], i7[4])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_120] ≥ 0)

  • LOAD608(i5[7], i7[7], 0) → LOAD768(i5[7], i7[7], i7[7])
    • ((UIncreasing(LOAD768(i5[7], i7[7], i7[7])), ≥)∧0 = 0∧[(-1)bso_122] ≥ 0)
    • ((UIncreasing(LOAD768(i5[7], i7[7], i7[7])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_122] ≥ 0)

  • LOAD484(i5[10], i7[10], 0) → LOAD608(i5[10], i7[10], i7[10])
    • ((UIncreasing(LOAD608(i5[10], i7[10], i7[10])), ≥)∧0 = 0∧[(-1)bso_124] ≥ 0)
    • ((UIncreasing(LOAD608(i5[10], i7[10], i7[10])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_124] ≥ 0)

  • LOAD363(i5[13], i7[13], 0) → LOAD484(i5[13], i7[13], i7[13])
    • ((UIncreasing(LOAD484(i5[13], i7[13], i7[13])), ≥)∧0 = 0∧[(-1)bso_126] ≥ 0)
    • ((UIncreasing(LOAD484(i5[13], i7[13], i7[13])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_126] ≥ 0)

  • LOAD258(i5[16], i7[16], 0) → LOAD363(i5[16], i7[16], i7[16])
    • ((UIncreasing(LOAD363(i5[16], i7[16], i7[16])), ≥)∧0 = 0∧[(-1)bso_128] ≥ 0)
    • ((UIncreasing(LOAD363(i5[16], i7[16], i7[16])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_128] ≥ 0)

  • LOAD175(i5[19], i7[19], 0) → LOAD258(i5[19], i7[19], i7[19])
    • ((UIncreasing(LOAD258(i5[19], i7[19], i7[19])), ≥)∧0 = 0∧[(-1)bso_130] ≥ 0)
    • ((UIncreasing(LOAD258(i5[19], i7[19], i7[19])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_130] ≥ 0)

  • COND_LOAD83(TRUE, i5[23], i7[23]) → LOAD175(i5[23], i7[23], i7[23])
    • ((UIncreasing(LOAD175(i5[23], i7[23], i7[23])), ≥)∧0 = 0∧[(-1)bso_132] ≥ 0)
    • ((UIncreasing(LOAD175(i5[23], i7[23], i7[23])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_132] ≥ 0)

  • LOAD83(i5[22], i7[22]) → COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22])
    • (i7[22] ≥ 0∧[98] + [-1]i7[22] ≥ 0 ⇒ (UIncreasing(COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22])), ≥)∧0 = 0∧[(-2)bni_133 + (-1)Bound*bni_133] + [(-1)bni_133]i7[22] ≥ 0∧0 = 0∧[(-1)bso_134] ≥ 0)

  • LOAD1100(i5[0], i7[0], 0) → LOAD83(i5[0], +(i7[0], 1))
    • ((UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥)∧0 = 0∧[1 + (-1)bso_136] ≥ 0)
    • (i696[3] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD83(i5[0], +(i7[0], 1))), ≥)∧0 = 0∧0 = 0∧0 ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_136] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = [3]   
POL(FALSE) = 0   
POL(COND_LOAD175(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(LOAD175(x1, x2, x3)) = [-1] + [-1]x2   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(1) = [1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   
POL(COND_LOAD258(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(LOAD258(x1, x2, x3)) = [-1] + [-1]x2   
POL(COND_LOAD363(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(LOAD363(x1, x2, x3)) = [-1] + [-1]x2   
POL(COND_LOAD484(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(LOAD484(x1, x2, x3)) = [-1] + [-1]x2   
POL(COND_LOAD608(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(LOAD608(x1, x2, x3)) = [-1] + [-1]x2   
POL(COND_LOAD768(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(LOAD768(x1, x2, x3)) = [-1] + [-1]x2   
POL(COND_LOAD949(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(LOAD949(x1, x2, x3)) = [-1] + [-1]x2   
POL(COND_LOAD1100(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(LOAD1100(x1, x2, x3)) = [-1] + [-1]x2   
POL(COND_LOAD83(x1, x2, x3)) = [-1] + [-1]x3   
POL(LOAD83(x1, x2)) = [-1] + [-1]x2   
POL(&&(x1, x2)) = [-1]   
POL(<(x1, x2)) = [-1]   
POL(100) = [100]   
POL(+(x1, x2)) = x1 + x2   

The following pairs are in P>:

LOAD1100(i5[0], i7[0], 0) → LOAD83(i5[0], +(i7[0], 1))

The following pairs are in Pbound:

LOAD83(i5[22], i7[22]) → COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22])

The following pairs are in P:

COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], -(i20[27], 1))
LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])
COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], -(i49[21], 1))
LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])
COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], -(i104[18], 1))
LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])
COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], -(i187[15], 1))
LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])
COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], -(i296[12], 1))
LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])
COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], -(i436[9], 1))
LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])
COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], -(i605[6], 1))
LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])
COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], -(i696[3], 1))
LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])
LOAD949(i5[1], i7[1], 0) → LOAD1100(i5[1], i7[1], i7[1])
LOAD768(i5[4], i7[4], 0) → LOAD949(i5[4], i7[4], i7[4])
LOAD608(i5[7], i7[7], 0) → LOAD768(i5[7], i7[7], i7[7])
LOAD484(i5[10], i7[10], 0) → LOAD608(i5[10], i7[10], i7[10])
LOAD363(i5[13], i7[13], 0) → LOAD484(i5[13], i7[13], i7[13])
LOAD258(i5[16], i7[16], 0) → LOAD363(i5[16], i7[16], i7[16])
LOAD175(i5[19], i7[19], 0) → LOAD258(i5[19], i7[19], i7[19])
COND_LOAD83(TRUE, i5[23], i7[23]) → LOAD175(i5[23], i7[23], i7[23])
LOAD83(i5[22], i7[22]) → COND_LOAD83(&&(>(i7[22], 0), <(i7[22], 100)), i5[22], i7[22])

At least the following rules have been oriented under context sensitive arithmetic replacement:

TRUE1&&(TRUE, TRUE)1
FALSE1&&(TRUE, FALSE)1
FALSE1&&(FALSE, TRUE)1
FALSE1&&(FALSE, FALSE)1

(172) Complex Obligation (AND)

(173) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


R is empty.

The integer pair graph contains the following rules and edges:
(27): COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], i20[27] - 1)
(26): LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(i20[26] > 0, i5[26], i7[26], i20[26])
(21): COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], i49[21] - 1)
(20): LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(i49[20] > 0, i5[20], i7[20], i49[20])
(18): COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], i104[18] - 1)
(17): LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(i104[17] > 0, i5[17], i7[17], i104[17])
(15): COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], i187[15] - 1)
(14): LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(i187[14] > 0, i5[14], i7[14], i187[14])
(12): COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], i296[12] - 1)
(11): LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(i296[11] > 0, i5[11], i7[11], i296[11])
(9): COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], i436[9] - 1)
(8): LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(i436[8] > 0, i5[8], i7[8], i436[8])
(6): COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], i605[6] - 1)
(5): LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(i605[5] > 0, i5[5], i7[5], i605[5])
(3): COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], i696[3] - 1)
(2): LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(i696[2] > 0, i5[2], i7[2], i696[2])
(1): LOAD949(i5[1], i7[1], 0) → LOAD1100(i5[1], i7[1], i7[1])
(4): LOAD768(i5[4], i7[4], 0) → LOAD949(i5[4], i7[4], i7[4])
(7): LOAD608(i5[7], i7[7], 0) → LOAD768(i5[7], i7[7], i7[7])
(10): LOAD484(i5[10], i7[10], 0) → LOAD608(i5[10], i7[10], i7[10])
(13): LOAD363(i5[13], i7[13], 0) → LOAD484(i5[13], i7[13], i7[13])
(16): LOAD258(i5[16], i7[16], 0) → LOAD363(i5[16], i7[16], i7[16])
(19): LOAD175(i5[19], i7[19], 0) → LOAD258(i5[19], i7[19], i7[19])
(23): COND_LOAD83(TRUE, i5[23], i7[23]) → LOAD175(i5[23], i7[23], i7[23])
(22): LOAD83(i5[22], i7[22]) → COND_LOAD83(i7[22] > 0 && i7[22] < 100, i5[22], i7[22])

(4) -> (1), if ((i5[4]* i5[1])∧(i7[4]* 0)∧(i7[4]* i7[1]))


(6) -> (1), if ((i605[6] - 1* 0)∧(i5[6]* i5[1])∧(i7[6]* i7[1]))


(1) -> (2), if ((i5[1]* i5[2])∧(i7[1]* i7[2])∧(i7[1]* i696[2]))


(3) -> (2), if ((i7[3]* i7[2])∧(i696[3] - 1* i696[2])∧(i5[3]* i5[2]))


(2) -> (3), if ((i5[2]* i5[3])∧(i7[2]* i7[3])∧(i696[2]* i696[3])∧(i696[2] > 0* TRUE))


(7) -> (4), if ((i7[7]* 0)∧(i7[7]* i7[4])∧(i5[7]* i5[4]))


(9) -> (4), if ((i7[9]* i7[4])∧(i436[9] - 1* 0)∧(i5[9]* i5[4]))


(4) -> (5), if ((i7[4]* i7[5])∧(i7[4]* i605[5])∧(i5[4]* i5[5]))


(6) -> (5), if ((i7[6]* i7[5])∧(i605[6] - 1* i605[5])∧(i5[6]* i5[5]))


(5) -> (6), if ((i5[5]* i5[6])∧(i7[5]* i7[6])∧(i605[5]* i605[6])∧(i605[5] > 0* TRUE))


(10) -> (7), if ((i5[10]* i5[7])∧(i7[10]* i7[7])∧(i7[10]* 0))


(12) -> (7), if ((i296[12] - 1* 0)∧(i7[12]* i7[7])∧(i5[12]* i5[7]))


(7) -> (8), if ((i5[7]* i5[8])∧(i7[7]* i436[8])∧(i7[7]* i7[8]))


(9) -> (8), if ((i436[9] - 1* i436[8])∧(i7[9]* i7[8])∧(i5[9]* i5[8]))


(8) -> (9), if ((i7[8]* i7[9])∧(i436[8]* i436[9])∧(i5[8]* i5[9])∧(i436[8] > 0* TRUE))


(13) -> (10), if ((i5[13]* i5[10])∧(i7[13]* 0)∧(i7[13]* i7[10]))


(15) -> (10), if ((i7[15]* i7[10])∧(i187[15] - 1* 0)∧(i5[15]* i5[10]))


(10) -> (11), if ((i7[10]* i7[11])∧(i5[10]* i5[11])∧(i7[10]* i296[11]))


(12) -> (11), if ((i296[12] - 1* i296[11])∧(i5[12]* i5[11])∧(i7[12]* i7[11]))


(11) -> (12), if ((i296[11] > 0* TRUE)∧(i7[11]* i7[12])∧(i296[11]* i296[12])∧(i5[11]* i5[12]))


(16) -> (13), if ((i7[16]* i7[13])∧(i7[16]* 0)∧(i5[16]* i5[13]))


(18) -> (13), if ((i5[18]* i5[13])∧(i104[18] - 1* 0)∧(i7[18]* i7[13]))


(13) -> (14), if ((i7[13]* i187[14])∧(i5[13]* i5[14])∧(i7[13]* i7[14]))


(15) -> (14), if ((i187[15] - 1* i187[14])∧(i5[15]* i5[14])∧(i7[15]* i7[14]))


(14) -> (15), if ((i7[14]* i7[15])∧(i5[14]* i5[15])∧(i187[14]* i187[15])∧(i187[14] > 0* TRUE))


(19) -> (16), if ((i7[19]* 0)∧(i5[19]* i5[16])∧(i7[19]* i7[16]))


(21) -> (16), if ((i7[21]* i7[16])∧(i49[21] - 1* 0)∧(i5[21]* i5[16]))


(16) -> (17), if ((i7[16]* i104[17])∧(i5[16]* i5[17])∧(i7[16]* i7[17]))


(18) -> (17), if ((i104[18] - 1* i104[17])∧(i5[18]* i5[17])∧(i7[18]* i7[17]))


(17) -> (18), if ((i7[17]* i7[18])∧(i5[17]* i5[18])∧(i104[17]* i104[18])∧(i104[17] > 0* TRUE))


(23) -> (19), if ((i5[23]* i5[19])∧(i7[23]* i7[19])∧(i7[23]* 0))


(27) -> (19), if ((i7[27]* i7[19])∧(i5[27]* i5[19])∧(i20[27] - 1* 0))


(19) -> (20), if ((i7[19]* i49[20])∧(i7[19]* i7[20])∧(i5[19]* i5[20]))


(21) -> (20), if ((i7[21]* i7[20])∧(i49[21] - 1* i49[20])∧(i5[21]* i5[20]))


(20) -> (21), if ((i7[20]* i7[21])∧(i49[20] > 0* TRUE)∧(i5[20]* i5[21])∧(i49[20]* i49[21]))


(22) -> (23), if ((i5[22]* i5[23])∧(i7[22] > 0 && i7[22] < 100* TRUE)∧(i7[22]* i7[23]))


(23) -> (26), if ((i7[23]* i7[26])∧(i5[23]* i5[26])∧(i7[23]* i20[26]))


(27) -> (26), if ((i20[27] - 1* i20[26])∧(i7[27]* i7[26])∧(i5[27]* i5[26]))


(26) -> (27), if ((i20[26] > 0* TRUE)∧(i7[26]* i7[27])∧(i20[26]* i20[27])∧(i5[26]* i5[27]))



The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(174) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 8 SCCs with 9 less nodes.

(175) Complex Obligation (AND)

(176) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(3): COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], i696[3] - 1)
(2): LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(i696[2] > 0, i5[2], i7[2], i696[2])

(3) -> (2), if ((i7[3]* i7[2])∧(i696[3] - 1* i696[2])∧(i5[3]* i5[2]))


(2) -> (3), if ((i5[2]* i5[3])∧(i7[2]* i7[3])∧(i696[2]* i696[3])∧(i696[2] > 0* TRUE))



The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(177) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], -(i696[3], 1)) the following chains were created:
  • We consider the chain LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2]), COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], -(i696[3], 1)), LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2]) which results in the following constraint:

    (1)    (i5[2]=i5[3]i7[2]=i7[3]i696[2]=i696[3]>(i696[2], 0)=TRUEi7[3]=i7[2]1-(i696[3], 1)=i696[2]1i5[3]=i5[2]1COND_LOAD1100(TRUE, i5[3], i7[3], i696[3])≥NonInfC∧COND_LOAD1100(TRUE, i5[3], i7[3], i696[3])≥LOAD1100(i5[3], i7[3], -(i696[3], 1))∧(UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i696[2], 0)=TRUECOND_LOAD1100(TRUE, i5[2], i7[2], i696[2])≥NonInfC∧COND_LOAD1100(TRUE, i5[2], i7[2], i696[2])≥LOAD1100(i5[2], i7[2], -(i696[2], 1))∧(UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i696[2] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i696[2] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i696[2] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i696[2] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i696[2] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i696[2] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2]) the following chains were created:
  • We consider the chain LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2]), COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], -(i696[3], 1)) which results in the following constraint:

    (8)    (i5[2]=i5[3]i7[2]=i7[3]i696[2]=i696[3]>(i696[2], 0)=TRUELOAD1100(i5[2], i7[2], i696[2])≥NonInfC∧LOAD1100(i5[2], i7[2], i696[2])≥COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])∧(UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i696[2], 0)=TRUELOAD1100(i5[2], i7[2], i696[2])≥NonInfC∧LOAD1100(i5[2], i7[2], i696[2])≥COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])∧(UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i696[2] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i696[2] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i696[2] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i696[2] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i696[2] ≥ 0 ⇒ (UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i696[2] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], -(i696[3], 1))
    • (i696[2] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i696[2] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])
    • (i696[2] ≥ 0 ⇒ (UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i696[2] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(COND_LOAD1100(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD1100(x1, x2, x3)) = [-1] + x3   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(1) = [1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], -(i696[3], 1))

The following pairs are in Pbound:

COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], -(i696[3], 1))
LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])

The following pairs are in P:

LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])

There are no usable rules.

(178) Complex Obligation (AND)

(179) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(2): LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(i696[2] > 0, i5[2], i7[2], i696[2])


The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(180) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(181) TRUE

(182) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(183) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(184) TRUE

(185) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(6): COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], i605[6] - 1)
(5): LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(i605[5] > 0, i5[5], i7[5], i605[5])

(6) -> (5), if ((i7[6]* i7[5])∧(i605[6] - 1* i605[5])∧(i5[6]* i5[5]))


(5) -> (6), if ((i5[5]* i5[6])∧(i7[5]* i7[6])∧(i605[5]* i605[6])∧(i605[5] > 0* TRUE))



The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(186) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], -(i605[6], 1)) the following chains were created:
  • We consider the chain LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5]), COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], -(i605[6], 1)), LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5]) which results in the following constraint:

    (1)    (i5[5]=i5[6]i7[5]=i7[6]i605[5]=i605[6]>(i605[5], 0)=TRUEi7[6]=i7[5]1-(i605[6], 1)=i605[5]1i5[6]=i5[5]1COND_LOAD949(TRUE, i5[6], i7[6], i605[6])≥NonInfC∧COND_LOAD949(TRUE, i5[6], i7[6], i605[6])≥LOAD949(i5[6], i7[6], -(i605[6], 1))∧(UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i605[5], 0)=TRUECOND_LOAD949(TRUE, i5[5], i7[5], i605[5])≥NonInfC∧COND_LOAD949(TRUE, i5[5], i7[5], i605[5])≥LOAD949(i5[5], i7[5], -(i605[5], 1))∧(UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i605[5] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i605[5] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i605[5] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i605[5] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i605[5] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i605[5] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5]) the following chains were created:
  • We consider the chain LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5]), COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], -(i605[6], 1)) which results in the following constraint:

    (8)    (i5[5]=i5[6]i7[5]=i7[6]i605[5]=i605[6]>(i605[5], 0)=TRUELOAD949(i5[5], i7[5], i605[5])≥NonInfC∧LOAD949(i5[5], i7[5], i605[5])≥COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])∧(UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i605[5], 0)=TRUELOAD949(i5[5], i7[5], i605[5])≥NonInfC∧LOAD949(i5[5], i7[5], i605[5])≥COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])∧(UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i605[5] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i605[5] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i605[5] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i605[5] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i605[5] ≥ 0 ⇒ (UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i605[5] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], -(i605[6], 1))
    • (i605[5] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i605[5] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])
    • (i605[5] ≥ 0 ⇒ (UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i605[5] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(COND_LOAD949(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD949(x1, x2, x3)) = [-1] + x3   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(1) = [1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], -(i605[6], 1))

The following pairs are in Pbound:

COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], -(i605[6], 1))
LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])

The following pairs are in P:

LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])

There are no usable rules.

(187) Complex Obligation (AND)

(188) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(5): LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(i605[5] > 0, i5[5], i7[5], i605[5])


The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(189) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(190) TRUE

(191) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(192) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(193) TRUE

(194) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(9): COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], i436[9] - 1)
(8): LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(i436[8] > 0, i5[8], i7[8], i436[8])

(9) -> (8), if ((i436[9] - 1* i436[8])∧(i7[9]* i7[8])∧(i5[9]* i5[8]))


(8) -> (9), if ((i7[8]* i7[9])∧(i436[8]* i436[9])∧(i5[8]* i5[9])∧(i436[8] > 0* TRUE))



The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(195) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], -(i436[9], 1)) the following chains were created:
  • We consider the chain LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8]), COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], -(i436[9], 1)), LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8]) which results in the following constraint:

    (1)    (i7[8]=i7[9]i436[8]=i436[9]i5[8]=i5[9]>(i436[8], 0)=TRUE-(i436[9], 1)=i436[8]1i7[9]=i7[8]1i5[9]=i5[8]1COND_LOAD768(TRUE, i5[9], i7[9], i436[9])≥NonInfC∧COND_LOAD768(TRUE, i5[9], i7[9], i436[9])≥LOAD768(i5[9], i7[9], -(i436[9], 1))∧(UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i436[8], 0)=TRUECOND_LOAD768(TRUE, i5[8], i7[8], i436[8])≥NonInfC∧COND_LOAD768(TRUE, i5[8], i7[8], i436[8])≥LOAD768(i5[8], i7[8], -(i436[8], 1))∧(UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i436[8] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i436[8] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i436[8] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i436[8] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i436[8] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i436[8] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8]) the following chains were created:
  • We consider the chain LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8]), COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], -(i436[9], 1)) which results in the following constraint:

    (8)    (i7[8]=i7[9]i436[8]=i436[9]i5[8]=i5[9]>(i436[8], 0)=TRUELOAD768(i5[8], i7[8], i436[8])≥NonInfC∧LOAD768(i5[8], i7[8], i436[8])≥COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])∧(UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i436[8], 0)=TRUELOAD768(i5[8], i7[8], i436[8])≥NonInfC∧LOAD768(i5[8], i7[8], i436[8])≥COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])∧(UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i436[8] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i436[8] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i436[8] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i436[8] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i436[8] ≥ 0 ⇒ (UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i436[8] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], -(i436[9], 1))
    • (i436[8] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i436[8] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])
    • (i436[8] ≥ 0 ⇒ (UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i436[8] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(COND_LOAD768(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD768(x1, x2, x3)) = [-1] + x3   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(1) = [1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], -(i436[9], 1))

The following pairs are in Pbound:

COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], -(i436[9], 1))
LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])

The following pairs are in P:

LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])

There are no usable rules.

(196) Complex Obligation (AND)

(197) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(8): LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(i436[8] > 0, i5[8], i7[8], i436[8])


The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(198) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(199) TRUE

(200) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(201) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(202) TRUE

(203) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(12): COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], i296[12] - 1)
(11): LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(i296[11] > 0, i5[11], i7[11], i296[11])

(12) -> (11), if ((i296[12] - 1* i296[11])∧(i5[12]* i5[11])∧(i7[12]* i7[11]))


(11) -> (12), if ((i296[11] > 0* TRUE)∧(i7[11]* i7[12])∧(i296[11]* i296[12])∧(i5[11]* i5[12]))



The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(204) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], -(i296[12], 1)) the following chains were created:
  • We consider the chain LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11]), COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], -(i296[12], 1)), LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11]) which results in the following constraint:

    (1)    (>(i296[11], 0)=TRUEi7[11]=i7[12]i296[11]=i296[12]i5[11]=i5[12]-(i296[12], 1)=i296[11]1i5[12]=i5[11]1i7[12]=i7[11]1COND_LOAD608(TRUE, i5[12], i7[12], i296[12])≥NonInfC∧COND_LOAD608(TRUE, i5[12], i7[12], i296[12])≥LOAD608(i5[12], i7[12], -(i296[12], 1))∧(UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i296[11], 0)=TRUECOND_LOAD608(TRUE, i5[11], i7[11], i296[11])≥NonInfC∧COND_LOAD608(TRUE, i5[11], i7[11], i296[11])≥LOAD608(i5[11], i7[11], -(i296[11], 1))∧(UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i296[11] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i296[11] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i296[11] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i296[11] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i296[11] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i296[11] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11]) the following chains were created:
  • We consider the chain LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11]), COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], -(i296[12], 1)) which results in the following constraint:

    (8)    (>(i296[11], 0)=TRUEi7[11]=i7[12]i296[11]=i296[12]i5[11]=i5[12]LOAD608(i5[11], i7[11], i296[11])≥NonInfC∧LOAD608(i5[11], i7[11], i296[11])≥COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])∧(UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i296[11], 0)=TRUELOAD608(i5[11], i7[11], i296[11])≥NonInfC∧LOAD608(i5[11], i7[11], i296[11])≥COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])∧(UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i296[11] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i296[11] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i296[11] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i296[11] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i296[11] ≥ 0 ⇒ (UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i296[11] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], -(i296[12], 1))
    • (i296[11] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i296[11] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])
    • (i296[11] ≥ 0 ⇒ (UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i296[11] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(COND_LOAD608(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD608(x1, x2, x3)) = [-1] + x3   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(1) = [1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], -(i296[12], 1))

The following pairs are in Pbound:

COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], -(i296[12], 1))
LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])

The following pairs are in P:

LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])

There are no usable rules.

(205) Complex Obligation (AND)

(206) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(11): LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(i296[11] > 0, i5[11], i7[11], i296[11])


The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(207) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(208) TRUE

(209) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(210) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(211) TRUE

(212) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(15): COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], i187[15] - 1)
(14): LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(i187[14] > 0, i5[14], i7[14], i187[14])

(15) -> (14), if ((i187[15] - 1* i187[14])∧(i5[15]* i5[14])∧(i7[15]* i7[14]))


(14) -> (15), if ((i7[14]* i7[15])∧(i5[14]* i5[15])∧(i187[14]* i187[15])∧(i187[14] > 0* TRUE))



The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(213) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], -(i187[15], 1)) the following chains were created:
  • We consider the chain LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14]), COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], -(i187[15], 1)), LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14]) which results in the following constraint:

    (1)    (i7[14]=i7[15]i5[14]=i5[15]i187[14]=i187[15]>(i187[14], 0)=TRUE-(i187[15], 1)=i187[14]1i5[15]=i5[14]1i7[15]=i7[14]1COND_LOAD484(TRUE, i5[15], i7[15], i187[15])≥NonInfC∧COND_LOAD484(TRUE, i5[15], i7[15], i187[15])≥LOAD484(i5[15], i7[15], -(i187[15], 1))∧(UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i187[14], 0)=TRUECOND_LOAD484(TRUE, i5[14], i7[14], i187[14])≥NonInfC∧COND_LOAD484(TRUE, i5[14], i7[14], i187[14])≥LOAD484(i5[14], i7[14], -(i187[14], 1))∧(UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i187[14] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i187[14] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i187[14] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i187[14] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i187[14] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i187[14] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14]) the following chains were created:
  • We consider the chain LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14]), COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], -(i187[15], 1)) which results in the following constraint:

    (8)    (i7[14]=i7[15]i5[14]=i5[15]i187[14]=i187[15]>(i187[14], 0)=TRUELOAD484(i5[14], i7[14], i187[14])≥NonInfC∧LOAD484(i5[14], i7[14], i187[14])≥COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])∧(UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i187[14], 0)=TRUELOAD484(i5[14], i7[14], i187[14])≥NonInfC∧LOAD484(i5[14], i7[14], i187[14])≥COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])∧(UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i187[14] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i187[14] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i187[14] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i187[14] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i187[14] ≥ 0 ⇒ (UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i187[14] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], -(i187[15], 1))
    • (i187[14] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i187[14] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])
    • (i187[14] ≥ 0 ⇒ (UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i187[14] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(COND_LOAD484(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD484(x1, x2, x3)) = [-1] + x3   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(1) = [1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], -(i187[15], 1))

The following pairs are in Pbound:

COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], -(i187[15], 1))
LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])

The following pairs are in P:

LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])

There are no usable rules.

(214) Complex Obligation (AND)

(215) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(14): LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(i187[14] > 0, i5[14], i7[14], i187[14])


The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(216) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(217) TRUE

(218) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(219) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(220) TRUE

(221) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(18): COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], i104[18] - 1)
(17): LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(i104[17] > 0, i5[17], i7[17], i104[17])

(18) -> (17), if ((i104[18] - 1* i104[17])∧(i5[18]* i5[17])∧(i7[18]* i7[17]))


(17) -> (18), if ((i7[17]* i7[18])∧(i5[17]* i5[18])∧(i104[17]* i104[18])∧(i104[17] > 0* TRUE))



The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(222) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], -(i104[18], 1)) the following chains were created:
  • We consider the chain LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17]), COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], -(i104[18], 1)), LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17]) which results in the following constraint:

    (1)    (i7[17]=i7[18]i5[17]=i5[18]i104[17]=i104[18]>(i104[17], 0)=TRUE-(i104[18], 1)=i104[17]1i5[18]=i5[17]1i7[18]=i7[17]1COND_LOAD363(TRUE, i5[18], i7[18], i104[18])≥NonInfC∧COND_LOAD363(TRUE, i5[18], i7[18], i104[18])≥LOAD363(i5[18], i7[18], -(i104[18], 1))∧(UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i104[17], 0)=TRUECOND_LOAD363(TRUE, i5[17], i7[17], i104[17])≥NonInfC∧COND_LOAD363(TRUE, i5[17], i7[17], i104[17])≥LOAD363(i5[17], i7[17], -(i104[17], 1))∧(UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i104[17] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i104[17] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i104[17] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i104[17] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i104[17] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i104[17] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17]) the following chains were created:
  • We consider the chain LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17]), COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], -(i104[18], 1)) which results in the following constraint:

    (8)    (i7[17]=i7[18]i5[17]=i5[18]i104[17]=i104[18]>(i104[17], 0)=TRUELOAD363(i5[17], i7[17], i104[17])≥NonInfC∧LOAD363(i5[17], i7[17], i104[17])≥COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])∧(UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i104[17], 0)=TRUELOAD363(i5[17], i7[17], i104[17])≥NonInfC∧LOAD363(i5[17], i7[17], i104[17])≥COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])∧(UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i104[17] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i104[17] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i104[17] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i104[17] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i104[17] ≥ 0 ⇒ (UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i104[17] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], -(i104[18], 1))
    • (i104[17] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i104[17] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])
    • (i104[17] ≥ 0 ⇒ (UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i104[17] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(COND_LOAD363(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD363(x1, x2, x3)) = [-1] + x3   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(1) = [1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], -(i104[18], 1))

The following pairs are in Pbound:

COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], -(i104[18], 1))
LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])

The following pairs are in P:

LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])

There are no usable rules.

(223) Complex Obligation (AND)

(224) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(17): LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(i104[17] > 0, i5[17], i7[17], i104[17])


The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(225) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(226) TRUE

(227) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(228) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(229) TRUE

(230) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(21): COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], i49[21] - 1)
(20): LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(i49[20] > 0, i5[20], i7[20], i49[20])

(21) -> (20), if ((i7[21]* i7[20])∧(i49[21] - 1* i49[20])∧(i5[21]* i5[20]))


(20) -> (21), if ((i7[20]* i7[21])∧(i49[20] > 0* TRUE)∧(i5[20]* i5[21])∧(i49[20]* i49[21]))



The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(231) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], -(i49[21], 1)) the following chains were created:
  • We consider the chain LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20]), COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], -(i49[21], 1)), LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20]) which results in the following constraint:

    (1)    (i7[20]=i7[21]>(i49[20], 0)=TRUEi5[20]=i5[21]i49[20]=i49[21]i7[21]=i7[20]1-(i49[21], 1)=i49[20]1i5[21]=i5[20]1COND_LOAD258(TRUE, i5[21], i7[21], i49[21])≥NonInfC∧COND_LOAD258(TRUE, i5[21], i7[21], i49[21])≥LOAD258(i5[21], i7[21], -(i49[21], 1))∧(UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i49[20], 0)=TRUECOND_LOAD258(TRUE, i5[20], i7[20], i49[20])≥NonInfC∧COND_LOAD258(TRUE, i5[20], i7[20], i49[20])≥LOAD258(i5[20], i7[20], -(i49[20], 1))∧(UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i49[20] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i49[20] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i49[20] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i49[20] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i49[20] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i49[20] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20]) the following chains were created:
  • We consider the chain LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20]), COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], -(i49[21], 1)) which results in the following constraint:

    (8)    (i7[20]=i7[21]>(i49[20], 0)=TRUEi5[20]=i5[21]i49[20]=i49[21]LOAD258(i5[20], i7[20], i49[20])≥NonInfC∧LOAD258(i5[20], i7[20], i49[20])≥COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])∧(UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i49[20], 0)=TRUELOAD258(i5[20], i7[20], i49[20])≥NonInfC∧LOAD258(i5[20], i7[20], i49[20])≥COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])∧(UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i49[20] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i49[20] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i49[20] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i49[20] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i49[20] ≥ 0 ⇒ (UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i49[20] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], -(i49[21], 1))
    • (i49[20] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i49[20] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])
    • (i49[20] ≥ 0 ⇒ (UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i49[20] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(COND_LOAD258(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD258(x1, x2, x3)) = [-1] + x3   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(1) = [1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], -(i49[21], 1))

The following pairs are in Pbound:

COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], -(i49[21], 1))
LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])

The following pairs are in P:

LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])

There are no usable rules.

(232) Complex Obligation (AND)

(233) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(20): LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(i49[20] > 0, i5[20], i7[20], i49[20])


The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(234) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(235) TRUE

(236) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(237) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(238) TRUE

(239) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(26): LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(i20[26] > 0, i5[26], i7[26], i20[26])
(27): COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], i20[27] - 1)

(27) -> (26), if ((i20[27] - 1* i20[26])∧(i7[27]* i7[26])∧(i5[27]* i5[26]))


(26) -> (27), if ((i20[26] > 0* TRUE)∧(i7[26]* i7[27])∧(i20[26]* i20[27])∧(i5[26]* i5[27]))



The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(240) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26]) the following chains were created:
  • We consider the chain LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26]), COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], -(i20[27], 1)) which results in the following constraint:

    (1)    (>(i20[26], 0)=TRUEi7[26]=i7[27]i20[26]=i20[27]i5[26]=i5[27]LOAD175(i5[26], i7[26], i20[26])≥NonInfC∧LOAD175(i5[26], i7[26], i20[26])≥COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])∧(UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥))



    We simplified constraint (1) using rule (IV) which results in the following new constraint:

    (2)    (>(i20[26], 0)=TRUELOAD175(i5[26], i7[26], i20[26])≥NonInfC∧LOAD175(i5[26], i7[26], i20[26])≥COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])∧(UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i20[26] ≥ 0∧[(-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i20[26] ≥ 0∧[(-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i20[26] ≥ 0∧[(-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i20[26] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i20[26] ≥ 0 ⇒ (UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i20[26] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_14] ≥ 0)







For Pair COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], -(i20[27], 1)) the following chains were created:
  • We consider the chain LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26]), COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], -(i20[27], 1)), LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26]) which results in the following constraint:

    (8)    (>(i20[26], 0)=TRUEi7[26]=i7[27]i20[26]=i20[27]i5[26]=i5[27]-(i20[27], 1)=i20[26]1i7[27]=i7[26]1i5[27]=i5[26]1COND_LOAD175(TRUE, i5[27], i7[27], i20[27])≥NonInfC∧COND_LOAD175(TRUE, i5[27], i7[27], i20[27])≥LOAD175(i5[27], i7[27], -(i20[27], 1))∧(UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥))



    We simplified constraint (8) using rules (III), (IV) which results in the following new constraint:

    (9)    (>(i20[26], 0)=TRUECOND_LOAD175(TRUE, i5[26], i7[26], i20[26])≥NonInfC∧COND_LOAD175(TRUE, i5[26], i7[26], i20[26])≥LOAD175(i5[26], i7[26], -(i20[26], 1))∧(UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i20[26] ≥ 0∧[1 + (-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i20[26] ≥ 0∧[1 + (-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i20[26] ≥ 0∧[1 + (-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i20[26] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i20[26] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i20[26] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])
    • (i20[26] ≥ 0 ⇒ (UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i20[26] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_14] ≥ 0)

  • COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], -(i20[27], 1))
    • (i20[26] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i20[26] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_16] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(LOAD175(x1, x2, x3)) = [-1] + x3   
POL(COND_LOAD175(x1, x2, x3, x4)) = [-1] + x4   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(1) = [1]   

The following pairs are in P>:

COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], -(i20[27], 1))

The following pairs are in Pbound:

LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])
COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], -(i20[27], 1))

The following pairs are in P:

LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])

There are no usable rules.

(241) Complex Obligation (AND)

(242) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(26): LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(i20[26] > 0, i5[26], i7[26], i20[26])


The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(243) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(244) TRUE

(245) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(246) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(247) TRUE

(248) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(27): COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], i20[27] - 1)
(26): LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(i20[26] > 0, i5[26], i7[26], i20[26])
(21): COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], i49[21] - 1)
(20): LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(i49[20] > 0, i5[20], i7[20], i49[20])
(18): COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], i104[18] - 1)
(17): LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(i104[17] > 0, i5[17], i7[17], i104[17])
(15): COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], i187[15] - 1)
(14): LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(i187[14] > 0, i5[14], i7[14], i187[14])
(12): COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], i296[12] - 1)
(11): LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(i296[11] > 0, i5[11], i7[11], i296[11])
(9): COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], i436[9] - 1)
(8): LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(i436[8] > 0, i5[8], i7[8], i436[8])
(6): COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], i605[6] - 1)
(5): LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(i605[5] > 0, i5[5], i7[5], i605[5])
(3): COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], i696[3] - 1)
(2): LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(i696[2] > 0, i5[2], i7[2], i696[2])
(1): LOAD949(i5[1], i7[1], 0) → LOAD1100(i5[1], i7[1], i7[1])
(4): LOAD768(i5[4], i7[4], 0) → LOAD949(i5[4], i7[4], i7[4])
(7): LOAD608(i5[7], i7[7], 0) → LOAD768(i5[7], i7[7], i7[7])
(10): LOAD484(i5[10], i7[10], 0) → LOAD608(i5[10], i7[10], i7[10])
(13): LOAD363(i5[13], i7[13], 0) → LOAD484(i5[13], i7[13], i7[13])
(16): LOAD258(i5[16], i7[16], 0) → LOAD363(i5[16], i7[16], i7[16])
(19): LOAD175(i5[19], i7[19], 0) → LOAD258(i5[19], i7[19], i7[19])
(23): COND_LOAD83(TRUE, i5[23], i7[23]) → LOAD175(i5[23], i7[23], i7[23])
(0): LOAD1100(i5[0], i7[0], 0) → LOAD83(i5[0], i7[0] + 1)

(1) -> (0), if ((i7[1]* 0)∧(i5[1]* i5[0])∧(i7[1]* i7[0]))


(3) -> (0), if ((i7[3]* i7[0])∧(i5[3]* i5[0])∧(i696[3] - 1* 0))


(4) -> (1), if ((i5[4]* i5[1])∧(i7[4]* 0)∧(i7[4]* i7[1]))


(6) -> (1), if ((i605[6] - 1* 0)∧(i5[6]* i5[1])∧(i7[6]* i7[1]))


(1) -> (2), if ((i5[1]* i5[2])∧(i7[1]* i7[2])∧(i7[1]* i696[2]))


(3) -> (2), if ((i7[3]* i7[2])∧(i696[3] - 1* i696[2])∧(i5[3]* i5[2]))


(2) -> (3), if ((i5[2]* i5[3])∧(i7[2]* i7[3])∧(i696[2]* i696[3])∧(i696[2] > 0* TRUE))


(7) -> (4), if ((i7[7]* 0)∧(i7[7]* i7[4])∧(i5[7]* i5[4]))


(9) -> (4), if ((i7[9]* i7[4])∧(i436[9] - 1* 0)∧(i5[9]* i5[4]))


(4) -> (5), if ((i7[4]* i7[5])∧(i7[4]* i605[5])∧(i5[4]* i5[5]))


(6) -> (5), if ((i7[6]* i7[5])∧(i605[6] - 1* i605[5])∧(i5[6]* i5[5]))


(5) -> (6), if ((i5[5]* i5[6])∧(i7[5]* i7[6])∧(i605[5]* i605[6])∧(i605[5] > 0* TRUE))


(10) -> (7), if ((i5[10]* i5[7])∧(i7[10]* i7[7])∧(i7[10]* 0))


(12) -> (7), if ((i296[12] - 1* 0)∧(i7[12]* i7[7])∧(i5[12]* i5[7]))


(7) -> (8), if ((i5[7]* i5[8])∧(i7[7]* i436[8])∧(i7[7]* i7[8]))


(9) -> (8), if ((i436[9] - 1* i436[8])∧(i7[9]* i7[8])∧(i5[9]* i5[8]))


(8) -> (9), if ((i7[8]* i7[9])∧(i436[8]* i436[9])∧(i5[8]* i5[9])∧(i436[8] > 0* TRUE))


(13) -> (10), if ((i5[13]* i5[10])∧(i7[13]* 0)∧(i7[13]* i7[10]))


(15) -> (10), if ((i7[15]* i7[10])∧(i187[15] - 1* 0)∧(i5[15]* i5[10]))


(10) -> (11), if ((i7[10]* i7[11])∧(i5[10]* i5[11])∧(i7[10]* i296[11]))


(12) -> (11), if ((i296[12] - 1* i296[11])∧(i5[12]* i5[11])∧(i7[12]* i7[11]))


(11) -> (12), if ((i296[11] > 0* TRUE)∧(i7[11]* i7[12])∧(i296[11]* i296[12])∧(i5[11]* i5[12]))


(16) -> (13), if ((i7[16]* i7[13])∧(i7[16]* 0)∧(i5[16]* i5[13]))


(18) -> (13), if ((i5[18]* i5[13])∧(i104[18] - 1* 0)∧(i7[18]* i7[13]))


(13) -> (14), if ((i7[13]* i187[14])∧(i5[13]* i5[14])∧(i7[13]* i7[14]))


(15) -> (14), if ((i187[15] - 1* i187[14])∧(i5[15]* i5[14])∧(i7[15]* i7[14]))


(14) -> (15), if ((i7[14]* i7[15])∧(i5[14]* i5[15])∧(i187[14]* i187[15])∧(i187[14] > 0* TRUE))


(19) -> (16), if ((i7[19]* 0)∧(i5[19]* i5[16])∧(i7[19]* i7[16]))


(21) -> (16), if ((i7[21]* i7[16])∧(i49[21] - 1* 0)∧(i5[21]* i5[16]))


(16) -> (17), if ((i7[16]* i104[17])∧(i5[16]* i5[17])∧(i7[16]* i7[17]))


(18) -> (17), if ((i104[18] - 1* i104[17])∧(i5[18]* i5[17])∧(i7[18]* i7[17]))


(17) -> (18), if ((i7[17]* i7[18])∧(i5[17]* i5[18])∧(i104[17]* i104[18])∧(i104[17] > 0* TRUE))


(23) -> (19), if ((i5[23]* i5[19])∧(i7[23]* i7[19])∧(i7[23]* 0))


(27) -> (19), if ((i7[27]* i7[19])∧(i5[27]* i5[19])∧(i20[27] - 1* 0))


(19) -> (20), if ((i7[19]* i49[20])∧(i7[19]* i7[20])∧(i5[19]* i5[20]))


(21) -> (20), if ((i7[21]* i7[20])∧(i49[21] - 1* i49[20])∧(i5[21]* i5[20]))


(20) -> (21), if ((i7[20]* i7[21])∧(i49[20] > 0* TRUE)∧(i5[20]* i5[21])∧(i49[20]* i49[21]))


(23) -> (26), if ((i7[23]* i7[26])∧(i5[23]* i5[26])∧(i7[23]* i20[26]))


(27) -> (26), if ((i20[27] - 1* i20[26])∧(i7[27]* i7[26])∧(i5[27]* i5[26]))


(26) -> (27), if ((i20[26] > 0* TRUE)∧(i7[26]* i7[27])∧(i20[26]* i20[27])∧(i5[26]* i5[27]))



The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(249) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 8 SCCs with 9 less nodes.

(250) Complex Obligation (AND)

(251) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(3): COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], i696[3] - 1)
(2): LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(i696[2] > 0, i5[2], i7[2], i696[2])

(3) -> (2), if ((i7[3]* i7[2])∧(i696[3] - 1* i696[2])∧(i5[3]* i5[2]))


(2) -> (3), if ((i5[2]* i5[3])∧(i7[2]* i7[3])∧(i696[2]* i696[3])∧(i696[2] > 0* TRUE))



The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(252) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], -(i696[3], 1)) the following chains were created:
  • We consider the chain LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2]), COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], -(i696[3], 1)), LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2]) which results in the following constraint:

    (1)    (i5[2]=i5[3]i7[2]=i7[3]i696[2]=i696[3]>(i696[2], 0)=TRUEi7[3]=i7[2]1-(i696[3], 1)=i696[2]1i5[3]=i5[2]1COND_LOAD1100(TRUE, i5[3], i7[3], i696[3])≥NonInfC∧COND_LOAD1100(TRUE, i5[3], i7[3], i696[3])≥LOAD1100(i5[3], i7[3], -(i696[3], 1))∧(UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i696[2], 0)=TRUECOND_LOAD1100(TRUE, i5[2], i7[2], i696[2])≥NonInfC∧COND_LOAD1100(TRUE, i5[2], i7[2], i696[2])≥LOAD1100(i5[2], i7[2], -(i696[2], 1))∧(UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i696[2] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i696[2] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i696[2] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i696[2] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i696[2] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i696[2] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2]) the following chains were created:
  • We consider the chain LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2]), COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], -(i696[3], 1)) which results in the following constraint:

    (8)    (i5[2]=i5[3]i7[2]=i7[3]i696[2]=i696[3]>(i696[2], 0)=TRUELOAD1100(i5[2], i7[2], i696[2])≥NonInfC∧LOAD1100(i5[2], i7[2], i696[2])≥COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])∧(UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i696[2], 0)=TRUELOAD1100(i5[2], i7[2], i696[2])≥NonInfC∧LOAD1100(i5[2], i7[2], i696[2])≥COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])∧(UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i696[2] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i696[2] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i696[2] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i696[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i696[2] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i696[2] ≥ 0 ⇒ (UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i696[2] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], -(i696[3], 1))
    • (i696[2] ≥ 0 ⇒ (UIncreasing(LOAD1100(i5[3], i7[3], -(i696[3], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i696[2] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])
    • (i696[2] ≥ 0 ⇒ (UIncreasing(COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i696[2] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(COND_LOAD1100(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD1100(x1, x2, x3)) = [-1] + x3   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(1) = [1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], -(i696[3], 1))

The following pairs are in Pbound:

COND_LOAD1100(TRUE, i5[3], i7[3], i696[3]) → LOAD1100(i5[3], i7[3], -(i696[3], 1))
LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])

The following pairs are in P:

LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(>(i696[2], 0), i5[2], i7[2], i696[2])

There are no usable rules.

(253) Complex Obligation (AND)

(254) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(2): LOAD1100(i5[2], i7[2], i696[2]) → COND_LOAD1100(i696[2] > 0, i5[2], i7[2], i696[2])


The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(255) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(256) TRUE

(257) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(258) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(259) TRUE

(260) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(6): COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], i605[6] - 1)
(5): LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(i605[5] > 0, i5[5], i7[5], i605[5])

(6) -> (5), if ((i7[6]* i7[5])∧(i605[6] - 1* i605[5])∧(i5[6]* i5[5]))


(5) -> (6), if ((i5[5]* i5[6])∧(i7[5]* i7[6])∧(i605[5]* i605[6])∧(i605[5] > 0* TRUE))



The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(261) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], -(i605[6], 1)) the following chains were created:
  • We consider the chain LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5]), COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], -(i605[6], 1)), LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5]) which results in the following constraint:

    (1)    (i5[5]=i5[6]i7[5]=i7[6]i605[5]=i605[6]>(i605[5], 0)=TRUEi7[6]=i7[5]1-(i605[6], 1)=i605[5]1i5[6]=i5[5]1COND_LOAD949(TRUE, i5[6], i7[6], i605[6])≥NonInfC∧COND_LOAD949(TRUE, i5[6], i7[6], i605[6])≥LOAD949(i5[6], i7[6], -(i605[6], 1))∧(UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i605[5], 0)=TRUECOND_LOAD949(TRUE, i5[5], i7[5], i605[5])≥NonInfC∧COND_LOAD949(TRUE, i5[5], i7[5], i605[5])≥LOAD949(i5[5], i7[5], -(i605[5], 1))∧(UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i605[5] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i605[5] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i605[5] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i605[5] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i605[5] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i605[5] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5]) the following chains were created:
  • We consider the chain LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5]), COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], -(i605[6], 1)) which results in the following constraint:

    (8)    (i5[5]=i5[6]i7[5]=i7[6]i605[5]=i605[6]>(i605[5], 0)=TRUELOAD949(i5[5], i7[5], i605[5])≥NonInfC∧LOAD949(i5[5], i7[5], i605[5])≥COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])∧(UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i605[5], 0)=TRUELOAD949(i5[5], i7[5], i605[5])≥NonInfC∧LOAD949(i5[5], i7[5], i605[5])≥COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])∧(UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i605[5] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i605[5] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i605[5] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i605[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i605[5] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i605[5] ≥ 0 ⇒ (UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i605[5] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], -(i605[6], 1))
    • (i605[5] ≥ 0 ⇒ (UIncreasing(LOAD949(i5[6], i7[6], -(i605[6], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i605[5] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])
    • (i605[5] ≥ 0 ⇒ (UIncreasing(COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i605[5] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(COND_LOAD949(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD949(x1, x2, x3)) = [-1] + x3   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(1) = [1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], -(i605[6], 1))

The following pairs are in Pbound:

COND_LOAD949(TRUE, i5[6], i7[6], i605[6]) → LOAD949(i5[6], i7[6], -(i605[6], 1))
LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])

The following pairs are in P:

LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(>(i605[5], 0), i5[5], i7[5], i605[5])

There are no usable rules.

(262) Complex Obligation (AND)

(263) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(5): LOAD949(i5[5], i7[5], i605[5]) → COND_LOAD949(i605[5] > 0, i5[5], i7[5], i605[5])


The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(264) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(265) TRUE

(266) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(267) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(268) TRUE

(269) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(9): COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], i436[9] - 1)
(8): LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(i436[8] > 0, i5[8], i7[8], i436[8])

(9) -> (8), if ((i436[9] - 1* i436[8])∧(i7[9]* i7[8])∧(i5[9]* i5[8]))


(8) -> (9), if ((i7[8]* i7[9])∧(i436[8]* i436[9])∧(i5[8]* i5[9])∧(i436[8] > 0* TRUE))



The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(270) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], -(i436[9], 1)) the following chains were created:
  • We consider the chain LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8]), COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], -(i436[9], 1)), LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8]) which results in the following constraint:

    (1)    (i7[8]=i7[9]i436[8]=i436[9]i5[8]=i5[9]>(i436[8], 0)=TRUE-(i436[9], 1)=i436[8]1i7[9]=i7[8]1i5[9]=i5[8]1COND_LOAD768(TRUE, i5[9], i7[9], i436[9])≥NonInfC∧COND_LOAD768(TRUE, i5[9], i7[9], i436[9])≥LOAD768(i5[9], i7[9], -(i436[9], 1))∧(UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i436[8], 0)=TRUECOND_LOAD768(TRUE, i5[8], i7[8], i436[8])≥NonInfC∧COND_LOAD768(TRUE, i5[8], i7[8], i436[8])≥LOAD768(i5[8], i7[8], -(i436[8], 1))∧(UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i436[8] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i436[8] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i436[8] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i436[8] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i436[8] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i436[8] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8]) the following chains were created:
  • We consider the chain LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8]), COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], -(i436[9], 1)) which results in the following constraint:

    (8)    (i7[8]=i7[9]i436[8]=i436[9]i5[8]=i5[9]>(i436[8], 0)=TRUELOAD768(i5[8], i7[8], i436[8])≥NonInfC∧LOAD768(i5[8], i7[8], i436[8])≥COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])∧(UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i436[8], 0)=TRUELOAD768(i5[8], i7[8], i436[8])≥NonInfC∧LOAD768(i5[8], i7[8], i436[8])≥COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])∧(UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i436[8] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i436[8] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i436[8] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i436[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i436[8] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i436[8] ≥ 0 ⇒ (UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i436[8] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], -(i436[9], 1))
    • (i436[8] ≥ 0 ⇒ (UIncreasing(LOAD768(i5[9], i7[9], -(i436[9], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i436[8] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])
    • (i436[8] ≥ 0 ⇒ (UIncreasing(COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i436[8] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(COND_LOAD768(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD768(x1, x2, x3)) = [-1] + x3   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(1) = [1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], -(i436[9], 1))

The following pairs are in Pbound:

COND_LOAD768(TRUE, i5[9], i7[9], i436[9]) → LOAD768(i5[9], i7[9], -(i436[9], 1))
LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])

The following pairs are in P:

LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(>(i436[8], 0), i5[8], i7[8], i436[8])

There are no usable rules.

(271) Complex Obligation (AND)

(272) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(8): LOAD768(i5[8], i7[8], i436[8]) → COND_LOAD768(i436[8] > 0, i5[8], i7[8], i436[8])


The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(273) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(274) TRUE

(275) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(276) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(277) TRUE

(278) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(12): COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], i296[12] - 1)
(11): LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(i296[11] > 0, i5[11], i7[11], i296[11])

(12) -> (11), if ((i296[12] - 1* i296[11])∧(i5[12]* i5[11])∧(i7[12]* i7[11]))


(11) -> (12), if ((i296[11] > 0* TRUE)∧(i7[11]* i7[12])∧(i296[11]* i296[12])∧(i5[11]* i5[12]))



The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(279) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], -(i296[12], 1)) the following chains were created:
  • We consider the chain LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11]), COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], -(i296[12], 1)), LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11]) which results in the following constraint:

    (1)    (>(i296[11], 0)=TRUEi7[11]=i7[12]i296[11]=i296[12]i5[11]=i5[12]-(i296[12], 1)=i296[11]1i5[12]=i5[11]1i7[12]=i7[11]1COND_LOAD608(TRUE, i5[12], i7[12], i296[12])≥NonInfC∧COND_LOAD608(TRUE, i5[12], i7[12], i296[12])≥LOAD608(i5[12], i7[12], -(i296[12], 1))∧(UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i296[11], 0)=TRUECOND_LOAD608(TRUE, i5[11], i7[11], i296[11])≥NonInfC∧COND_LOAD608(TRUE, i5[11], i7[11], i296[11])≥LOAD608(i5[11], i7[11], -(i296[11], 1))∧(UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i296[11] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i296[11] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i296[11] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i296[11] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i296[11] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i296[11] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11]) the following chains were created:
  • We consider the chain LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11]), COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], -(i296[12], 1)) which results in the following constraint:

    (8)    (>(i296[11], 0)=TRUEi7[11]=i7[12]i296[11]=i296[12]i5[11]=i5[12]LOAD608(i5[11], i7[11], i296[11])≥NonInfC∧LOAD608(i5[11], i7[11], i296[11])≥COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])∧(UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i296[11], 0)=TRUELOAD608(i5[11], i7[11], i296[11])≥NonInfC∧LOAD608(i5[11], i7[11], i296[11])≥COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])∧(UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i296[11] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i296[11] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i296[11] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i296[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i296[11] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i296[11] ≥ 0 ⇒ (UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i296[11] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], -(i296[12], 1))
    • (i296[11] ≥ 0 ⇒ (UIncreasing(LOAD608(i5[12], i7[12], -(i296[12], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i296[11] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])
    • (i296[11] ≥ 0 ⇒ (UIncreasing(COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i296[11] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(COND_LOAD608(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD608(x1, x2, x3)) = [-1] + x3   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(1) = [1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], -(i296[12], 1))

The following pairs are in Pbound:

COND_LOAD608(TRUE, i5[12], i7[12], i296[12]) → LOAD608(i5[12], i7[12], -(i296[12], 1))
LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])

The following pairs are in P:

LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(>(i296[11], 0), i5[11], i7[11], i296[11])

There are no usable rules.

(280) Complex Obligation (AND)

(281) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(11): LOAD608(i5[11], i7[11], i296[11]) → COND_LOAD608(i296[11] > 0, i5[11], i7[11], i296[11])


The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(282) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(283) TRUE

(284) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(285) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(286) TRUE

(287) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(15): COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], i187[15] - 1)
(14): LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(i187[14] > 0, i5[14], i7[14], i187[14])

(15) -> (14), if ((i187[15] - 1* i187[14])∧(i5[15]* i5[14])∧(i7[15]* i7[14]))


(14) -> (15), if ((i7[14]* i7[15])∧(i5[14]* i5[15])∧(i187[14]* i187[15])∧(i187[14] > 0* TRUE))



The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(288) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], -(i187[15], 1)) the following chains were created:
  • We consider the chain LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14]), COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], -(i187[15], 1)), LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14]) which results in the following constraint:

    (1)    (i7[14]=i7[15]i5[14]=i5[15]i187[14]=i187[15]>(i187[14], 0)=TRUE-(i187[15], 1)=i187[14]1i5[15]=i5[14]1i7[15]=i7[14]1COND_LOAD484(TRUE, i5[15], i7[15], i187[15])≥NonInfC∧COND_LOAD484(TRUE, i5[15], i7[15], i187[15])≥LOAD484(i5[15], i7[15], -(i187[15], 1))∧(UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i187[14], 0)=TRUECOND_LOAD484(TRUE, i5[14], i7[14], i187[14])≥NonInfC∧COND_LOAD484(TRUE, i5[14], i7[14], i187[14])≥LOAD484(i5[14], i7[14], -(i187[14], 1))∧(UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i187[14] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i187[14] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i187[14] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i187[14] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i187[14] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i187[14] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14]) the following chains were created:
  • We consider the chain LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14]), COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], -(i187[15], 1)) which results in the following constraint:

    (8)    (i7[14]=i7[15]i5[14]=i5[15]i187[14]=i187[15]>(i187[14], 0)=TRUELOAD484(i5[14], i7[14], i187[14])≥NonInfC∧LOAD484(i5[14], i7[14], i187[14])≥COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])∧(UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i187[14], 0)=TRUELOAD484(i5[14], i7[14], i187[14])≥NonInfC∧LOAD484(i5[14], i7[14], i187[14])≥COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])∧(UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i187[14] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i187[14] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i187[14] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i187[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i187[14] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i187[14] ≥ 0 ⇒ (UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i187[14] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], -(i187[15], 1))
    • (i187[14] ≥ 0 ⇒ (UIncreasing(LOAD484(i5[15], i7[15], -(i187[15], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i187[14] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])
    • (i187[14] ≥ 0 ⇒ (UIncreasing(COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i187[14] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(COND_LOAD484(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD484(x1, x2, x3)) = [-1] + x3   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(1) = [1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], -(i187[15], 1))

The following pairs are in Pbound:

COND_LOAD484(TRUE, i5[15], i7[15], i187[15]) → LOAD484(i5[15], i7[15], -(i187[15], 1))
LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])

The following pairs are in P:

LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(>(i187[14], 0), i5[14], i7[14], i187[14])

There are no usable rules.

(289) Complex Obligation (AND)

(290) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(14): LOAD484(i5[14], i7[14], i187[14]) → COND_LOAD484(i187[14] > 0, i5[14], i7[14], i187[14])


The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(291) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(292) TRUE

(293) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(294) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(295) TRUE

(296) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(18): COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], i104[18] - 1)
(17): LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(i104[17] > 0, i5[17], i7[17], i104[17])

(18) -> (17), if ((i104[18] - 1* i104[17])∧(i5[18]* i5[17])∧(i7[18]* i7[17]))


(17) -> (18), if ((i7[17]* i7[18])∧(i5[17]* i5[18])∧(i104[17]* i104[18])∧(i104[17] > 0* TRUE))



The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(297) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], -(i104[18], 1)) the following chains were created:
  • We consider the chain LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17]), COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], -(i104[18], 1)), LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17]) which results in the following constraint:

    (1)    (i7[17]=i7[18]i5[17]=i5[18]i104[17]=i104[18]>(i104[17], 0)=TRUE-(i104[18], 1)=i104[17]1i5[18]=i5[17]1i7[18]=i7[17]1COND_LOAD363(TRUE, i5[18], i7[18], i104[18])≥NonInfC∧COND_LOAD363(TRUE, i5[18], i7[18], i104[18])≥LOAD363(i5[18], i7[18], -(i104[18], 1))∧(UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i104[17], 0)=TRUECOND_LOAD363(TRUE, i5[17], i7[17], i104[17])≥NonInfC∧COND_LOAD363(TRUE, i5[17], i7[17], i104[17])≥LOAD363(i5[17], i7[17], -(i104[17], 1))∧(UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i104[17] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i104[17] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i104[17] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i104[17] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i104[17] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i104[17] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17]) the following chains were created:
  • We consider the chain LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17]), COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], -(i104[18], 1)) which results in the following constraint:

    (8)    (i7[17]=i7[18]i5[17]=i5[18]i104[17]=i104[18]>(i104[17], 0)=TRUELOAD363(i5[17], i7[17], i104[17])≥NonInfC∧LOAD363(i5[17], i7[17], i104[17])≥COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])∧(UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i104[17], 0)=TRUELOAD363(i5[17], i7[17], i104[17])≥NonInfC∧LOAD363(i5[17], i7[17], i104[17])≥COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])∧(UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i104[17] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i104[17] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i104[17] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i104[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i104[17] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i104[17] ≥ 0 ⇒ (UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i104[17] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], -(i104[18], 1))
    • (i104[17] ≥ 0 ⇒ (UIncreasing(LOAD363(i5[18], i7[18], -(i104[18], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i104[17] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])
    • (i104[17] ≥ 0 ⇒ (UIncreasing(COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i104[17] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(COND_LOAD363(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD363(x1, x2, x3)) = [-1] + x3   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(1) = [1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], -(i104[18], 1))

The following pairs are in Pbound:

COND_LOAD363(TRUE, i5[18], i7[18], i104[18]) → LOAD363(i5[18], i7[18], -(i104[18], 1))
LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])

The following pairs are in P:

LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(>(i104[17], 0), i5[17], i7[17], i104[17])

There are no usable rules.

(298) Complex Obligation (AND)

(299) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(17): LOAD363(i5[17], i7[17], i104[17]) → COND_LOAD363(i104[17] > 0, i5[17], i7[17], i104[17])


The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(300) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(301) TRUE

(302) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(303) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(304) TRUE

(305) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(21): COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], i49[21] - 1)
(20): LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(i49[20] > 0, i5[20], i7[20], i49[20])

(21) -> (20), if ((i7[21]* i7[20])∧(i49[21] - 1* i49[20])∧(i5[21]* i5[20]))


(20) -> (21), if ((i7[20]* i7[21])∧(i49[20] > 0* TRUE)∧(i5[20]* i5[21])∧(i49[20]* i49[21]))



The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(306) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], -(i49[21], 1)) the following chains were created:
  • We consider the chain LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20]), COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], -(i49[21], 1)), LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20]) which results in the following constraint:

    (1)    (i7[20]=i7[21]>(i49[20], 0)=TRUEi5[20]=i5[21]i49[20]=i49[21]i7[21]=i7[20]1-(i49[21], 1)=i49[20]1i5[21]=i5[20]1COND_LOAD258(TRUE, i5[21], i7[21], i49[21])≥NonInfC∧COND_LOAD258(TRUE, i5[21], i7[21], i49[21])≥LOAD258(i5[21], i7[21], -(i49[21], 1))∧(UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i49[20], 0)=TRUECOND_LOAD258(TRUE, i5[20], i7[20], i49[20])≥NonInfC∧COND_LOAD258(TRUE, i5[20], i7[20], i49[20])≥LOAD258(i5[20], i7[20], -(i49[20], 1))∧(UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i49[20] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i49[20] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i49[20] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i49[20] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i49[20] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i49[20] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20]) the following chains were created:
  • We consider the chain LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20]), COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], -(i49[21], 1)) which results in the following constraint:

    (8)    (i7[20]=i7[21]>(i49[20], 0)=TRUEi5[20]=i5[21]i49[20]=i49[21]LOAD258(i5[20], i7[20], i49[20])≥NonInfC∧LOAD258(i5[20], i7[20], i49[20])≥COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])∧(UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i49[20], 0)=TRUELOAD258(i5[20], i7[20], i49[20])≥NonInfC∧LOAD258(i5[20], i7[20], i49[20])≥COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])∧(UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i49[20] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i49[20] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i49[20] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i49[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i49[20] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i49[20] ≥ 0 ⇒ (UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i49[20] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], -(i49[21], 1))
    • (i49[20] ≥ 0 ⇒ (UIncreasing(LOAD258(i5[21], i7[21], -(i49[21], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i49[20] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])
    • (i49[20] ≥ 0 ⇒ (UIncreasing(COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i49[20] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(COND_LOAD258(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD258(x1, x2, x3)) = [-1] + x3   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(1) = [1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], -(i49[21], 1))

The following pairs are in Pbound:

COND_LOAD258(TRUE, i5[21], i7[21], i49[21]) → LOAD258(i5[21], i7[21], -(i49[21], 1))
LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])

The following pairs are in P:

LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(>(i49[20], 0), i5[20], i7[20], i49[20])

There are no usable rules.

(307) Complex Obligation (AND)

(308) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(20): LOAD258(i5[20], i7[20], i49[20]) → COND_LOAD258(i49[20] > 0, i5[20], i7[20], i49[20])


The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(309) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(310) TRUE

(311) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(312) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(313) TRUE

(314) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(26): LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(i20[26] > 0, i5[26], i7[26], i20[26])
(27): COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], i20[27] - 1)

(27) -> (26), if ((i20[27] - 1* i20[26])∧(i7[27]* i7[26])∧(i5[27]* i5[26]))


(26) -> (27), if ((i20[26] > 0* TRUE)∧(i7[26]* i7[27])∧(i20[26]* i20[27])∧(i5[26]* i5[27]))



The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(315) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26]) the following chains were created:
  • We consider the chain LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26]), COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], -(i20[27], 1)) which results in the following constraint:

    (1)    (>(i20[26], 0)=TRUEi7[26]=i7[27]i20[26]=i20[27]i5[26]=i5[27]LOAD175(i5[26], i7[26], i20[26])≥NonInfC∧LOAD175(i5[26], i7[26], i20[26])≥COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])∧(UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥))



    We simplified constraint (1) using rule (IV) which results in the following new constraint:

    (2)    (>(i20[26], 0)=TRUELOAD175(i5[26], i7[26], i20[26])≥NonInfC∧LOAD175(i5[26], i7[26], i20[26])≥COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])∧(UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i20[26] ≥ 0∧[(-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i20[26] ≥ 0∧[(-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i20[26] ≥ 0∧[(-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i20[26] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i20[26] ≥ 0 ⇒ (UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i20[26] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_14] ≥ 0)







For Pair COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], -(i20[27], 1)) the following chains were created:
  • We consider the chain LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26]), COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], -(i20[27], 1)), LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26]) which results in the following constraint:

    (8)    (>(i20[26], 0)=TRUEi7[26]=i7[27]i20[26]=i20[27]i5[26]=i5[27]-(i20[27], 1)=i20[26]1i7[27]=i7[26]1i5[27]=i5[26]1COND_LOAD175(TRUE, i5[27], i7[27], i20[27])≥NonInfC∧COND_LOAD175(TRUE, i5[27], i7[27], i20[27])≥LOAD175(i5[27], i7[27], -(i20[27], 1))∧(UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥))



    We simplified constraint (8) using rules (III), (IV) which results in the following new constraint:

    (9)    (>(i20[26], 0)=TRUECOND_LOAD175(TRUE, i5[26], i7[26], i20[26])≥NonInfC∧COND_LOAD175(TRUE, i5[26], i7[26], i20[26])≥LOAD175(i5[26], i7[26], -(i20[26], 1))∧(UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i20[26] ≥ 0∧[1 + (-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i20[26] ≥ 0∧[1 + (-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i20[26] ≥ 0∧[1 + (-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i20[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i20[26] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i20[26] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i20[26] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])
    • (i20[26] ≥ 0 ⇒ (UIncreasing(COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i20[26] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_14] ≥ 0)

  • COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], -(i20[27], 1))
    • (i20[26] ≥ 0 ⇒ (UIncreasing(LOAD175(i5[27], i7[27], -(i20[27], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i20[26] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_16] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(LOAD175(x1, x2, x3)) = [-1] + x3   
POL(COND_LOAD175(x1, x2, x3, x4)) = [-1] + x4   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(1) = [1]   

The following pairs are in P>:

COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], -(i20[27], 1))

The following pairs are in Pbound:

LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])
COND_LOAD175(TRUE, i5[27], i7[27], i20[27]) → LOAD175(i5[27], i7[27], -(i20[27], 1))

The following pairs are in P:

LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(>(i20[26], 0), i5[26], i7[26], i20[26])

There are no usable rules.

(316) Complex Obligation (AND)

(317) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(26): LOAD175(i5[26], i7[26], i20[26]) → COND_LOAD175(i20[26] > 0, i5[26], i7[26], i20[26])


The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(318) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(319) TRUE

(320) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load1100(x0, x1, x2)
Cond_Load1100(TRUE, x0, x1, x2)
Load949(x0, x1, x2)
Cond_Load949(TRUE, x0, x1, x2)
Load768(x0, x1, x2)
Cond_Load768(TRUE, x0, x1, x2)
Load608(x0, x1, x2)
Cond_Load608(TRUE, x0, x1, x2)
Load484(x0, x1, x2)
Cond_Load484(TRUE, x0, x1, x2)
Load363(x0, x1, x2)
Cond_Load363(TRUE, x0, x1, x2)
Load258(x0, x1, x2)
Cond_Load258(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load55(x0)
Cond_Load55(TRUE, x0)
Load175(x0, x1, x2)
Cond_Load175(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load551(TRUE, x0)

(321) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(322) TRUE